Files

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;
}