From: Lennart Poettering Date: Thu, 30 Jan 2014 15:46:48 +0000 (+0100) Subject: util: add u32ctz() call for determining ctz of uint32_t X-Git-Tag: v209~280 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=ec417ccc276f245382e1dc3c7b0599a878160193 util: add u32ctz() call for determining ctz of uint32_t --- diff --git a/src/shared/util.h b/src/shared/util.h index 117855de8..e4de4728b 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -743,7 +743,19 @@ static inline void _reset_umask_(struct _umask_struct_ *s) { _saved_umask_.quit = true) static inline unsigned u64log2(uint64_t n) { +#if __SIZEOF_LONG_LONG__ == 8 return (n > 1) ? (unsigned) __builtin_clzll(n) ^ 63U : 0; +#else +#error "Wut?" +#endif +} + +static inline unsigned u32ctz(uint32_t n) { +#if __SIZEOF_INT__ == 4 + return __builtin_ctz(n); +#else +#error "Wut?" +#endif } static inline bool logind_running(void) {