46 lines
680 B
C
46 lines
680 B
C
/*
|
|
* Copyright (C) 2018 Alibaba Group Holding Limited
|
|
*/
|
|
|
|
/*
|
|
DESCRIPTION
|
|
This file provides method to find the least/most significant bit in 32 bit
|
|
fields.
|
|
*/
|
|
|
|
#include "k_api.h"
|
|
#include "k_ffs.h"
|
|
#include "k_bitmap.h"
|
|
|
|
/* find most significant bit set */
|
|
|
|
int ffs32_msb(uint32_t bitmap)
|
|
{
|
|
if (bitmap == 0)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 32 - krhino_find_first_bit(&bitmap);
|
|
}
|
|
|
|
|
|
/* find least significant bit set */
|
|
|
|
int ffs32_lsb(uint32_t bitmap)
|
|
{
|
|
uint32_t x;
|
|
int lsbit;
|
|
|
|
if (bitmap == 0)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
x = bitmap & -bitmap;
|
|
lsbit = krhino_find_first_bit((uint32_t *)(&x));
|
|
|
|
return 32 - lsbit;
|
|
}
|
|
|