X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=netifd.h;h=77c8719d17cf7d7b8fc1a2403f3bebabed4e0b5a;hp=b70b73c435b799abecb10df4de6189b701f3237a;hb=e15ef7a8d23fbc6c931d7221ac792fce67729218;hpb=4ea88db58ca2c7d488996003b4a51cc3f3cf7808 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