chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
a09abc4
)
util: add log2u(), log2u_round_up()
author
Michal Schmidt
<mschmidt@redhat.com>
Tue, 14 Oct 2014 23:28:54 +0000
(
01:28
+0200)
committer
Michal Schmidt
<mschmidt@redhat.com>
Thu, 30 Oct 2014 18:50:50 +0000
(19:50 +0100)
Two's logarithms for unsigned.
src/shared/util.h
patch
|
blob
|
history
diff --git
a/src/shared/util.h
b/src/shared/util.h
index aad9eb7fcbc07f51edc4a95dd4107eea2d310e99..e405b02a8189760d4a9a773c160f330baba20bc7 100644
(file)
--- 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;
}