diff options
author | Jens Axboe <axboe@kernel.dk> | 2021-10-11 16:56:32 -0600 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2021-10-11 16:56:32 -0600 |
commit | ddf26640e73064f31e561c57063189d8850632d8 (patch) | |
tree | 6f5db0e07b83ddf873f4ef1b080225dd21fa292e | |
parent | 106f2d9f25b6687d1b980353af0c03e9faae5517 (diff) | |
parent | fe927f867fd43f83d95de2482f8c9a1e99ec778f (diff) | |
download | liburing-ddf26640e73064f31e561c57063189d8850632d8.tar.gz liburing-ddf26640e73064f31e561c57063189d8850632d8.tar.bz2 |
Merge branch 'master' of https://github.com/Tindarid/liburing
* 'master' of https://github.com/Tindarid/liburing:
setup.c: rewrite `__fls()`
-rw-r--r-- | src/setup.c | 26 |
1 files changed, 2 insertions, 24 deletions
diff --git a/src/setup.c b/src/setup.c index 5543468..891fc43 100644 --- a/src/setup.c +++ b/src/setup.c @@ -211,33 +211,11 @@ void io_uring_free_probe(struct io_uring_probe *probe) free(probe); } -static int __fls(int x) +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; + return 8 * sizeof(x) - __builtin_clz(x); } static unsigned roundup_pow2(unsigned depth) |