From: Jo-Philipp Wich Date: Mon, 5 Sep 2011 16:55:53 +0000 (+0200) Subject: Add inline fls() function for linux X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=commitdiff_plain;h=e15ef7a8d23fbc6c931d7221ac792fce67729218 Add inline fls() function for linux --- 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