Currently it's used to find most significant set bit. Signed-off-by: Gao Xiang <[email protected]> --- include/ez/bitops.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 include/ez/bitops.h
diff --git a/include/ez/bitops.h b/include/ez/bitops.h new file mode 100644 index 0000000..5d8858e --- /dev/null +++ b/include/ez/bitops.h @@ -0,0 +1,23 @@ +/* SPDX-License-Identifier: Apache-2.0 */ +/* + * ez/include/ez/bitops.h + * + * Copyright (C) 2020 Gao Xiang <[email protected]> + */ +#ifndef __EZ_BITOPS_H +#define __EZ_BITOPS_H + +/** + * fls - find last (most-significant) bit set + * @x: the word to search + * + * This is defined the same way as ffs. + * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32. + */ +static inline int fls(unsigned int x) +{ + return x ? sizeof(x) * 8 - __builtin_clz(x) : 0; +} + +#endif + -- 2.20.1
