From e15ef7a8d23fbc6c931d7221ac792fce67729218 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Mon, 5 Sep 2011 18:55:53 +0200 Subject: [PATCH] Add inline fls() function for linux --- netifd.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/netifd.h b/netifd.h index b70b73c..77c8719 100644 --- a/netifd.h +++ b/netifd.h @@ -30,4 +30,35 @@ extern bool config_init; int avl_strcmp(const void *k1, const void *k2, void *ptr); void config_init_interfaces(const char *name); +#ifdef __linux__ +static inline int fls(int x) +{ + int r = 32; + + if (!x) + return 0; + if (!(x & 0xffff0000u)) { + x <<= 16; + r -= 16; + } + if (!(x & 0xff000000u)) { + x <<= 8; + r -= 8; + } + if (!(x & 0xf0000000u)) { + x <<= 4; + r -= 4; + } + if (!(x & 0xc0000000u)) { + x <<= 2; + r -= 2; + } + if (!(x & 0x80000000u)) { + x <<= 1; + r -= 1; + } + return r; +} +#endif + #endif -- 2.30.2