From b5de6d984296c9446ba0d2d32fd3248f453208aa Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Wed, 15 Oct 2014 01:28:54 +0200 Subject: [PATCH] util: add log2u(), log2u_round_up() Two's logarithms for unsigned. --- src/shared/util.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/shared/util.h b/src/shared/util.h index aad9eb7fc..e405b02a8 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -830,6 +830,21 @@ static inline int log2i(int x) { return __SIZEOF_INT__ * 8 - __builtin_clz(x) - 1; } +static inline unsigned log2u(unsigned x) { + assert(x > 0); + + return sizeof(unsigned) * 8 - __builtin_clz(x) - 1; +} + +static inline unsigned log2u_round_up(unsigned x) { + assert(x > 0); + + if (x == 1) + return 0; + + return log2u(x - 1) + 1; +} + static inline bool logind_running(void) { return access("/run/systemd/seats/", F_OK) >= 0; } -- 2.30.2