X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=netifd.h;h=77c8719d17cf7d7b8fc1a2403f3bebabed4e0b5a;hp=771bcea69c21336e3b6598930c0439b447c944de;hb=e15ef7a8d23fbc6c931d7221ac792fce67729218;hpb=1f8dc227cdd425f1313f564fd074c614bb1954a3 diff --git a/netifd.h b/netifd.h index 771bcea..77c8719 100644 --- a/netifd.h +++ b/netifd.h @@ -19,6 +19,8 @@ #define DPRINTF(...) do {} while(0) #endif +#define __init __attribute__((constructor)) + struct device; struct interface; @@ -28,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