diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2011-09-05 18:55:53 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2011-09-05 18:58:22 +0200 |
commit | e15ef7a8d23fbc6c931d7221ac792fce67729218 (patch) | |
tree | 4e210fd47cd3b4cc2450205accc6b82a2812e364 /netifd.h | |
parent | 18afbe24610df2e1a7a2d417ea24c245f948a8d8 (diff) |
Add inline fls() function for linux
Diffstat (limited to 'netifd.h')
-rw-r--r-- | netifd.h | 31 |
1 files changed, 31 insertions, 0 deletions
@@ -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 |