mirror of
https://github.com/systemd/systemd.git
synced 2024-11-05 06:52:22 +03:00
journal: u64log2 can be expressed just as __builtin_clzll(n) ^ 63U
This commit is contained in:
parent
e8853816bf
commit
144e51eca2
@ -170,21 +170,6 @@ fail:
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint64_t u64log2(uint64_t n) {
|
|
||||||
unsigned r;
|
|
||||||
|
|
||||||
if (n <= 1)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
r = 0;
|
|
||||||
for (;;) {
|
|
||||||
n = n >> 1;
|
|
||||||
if (!n)
|
|
||||||
return r;
|
|
||||||
r++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static unsigned burst_modulate(unsigned burst, uint64_t available) {
|
static unsigned burst_modulate(unsigned burst, uint64_t available) {
|
||||||
unsigned k;
|
unsigned k;
|
||||||
|
|
||||||
|
@ -635,3 +635,7 @@ static inline void _reset_umask_(struct umask_struct *s) {
|
|||||||
for (__attribute__((cleanup(_reset_umask_))) struct umask_struct _saved_umask_ = { umask(mask), false }; \
|
for (__attribute__((cleanup(_reset_umask_))) struct umask_struct _saved_umask_ = { umask(mask), false }; \
|
||||||
!_saved_umask_.quit ; \
|
!_saved_umask_.quit ; \
|
||||||
_saved_umask_.quit = true)
|
_saved_umask_.quit = true)
|
||||||
|
|
||||||
|
static inline unsigned u64log2(uint64_t n) {
|
||||||
|
return (n > 1) ? __builtin_clzll(n) ^ 63U : 0;
|
||||||
|
}
|
||||||
|
@ -338,6 +338,16 @@ static void test_hostname_is_valid(void) {
|
|||||||
assert(!hostname_is_valid("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"));
|
assert(!hostname_is_valid("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_u64log2(void) {
|
||||||
|
assert(u64log2(0) == 0);
|
||||||
|
assert(u64log2(8) == 3);
|
||||||
|
assert(u64log2(9) == 3);
|
||||||
|
assert(u64log2(15) == 3);
|
||||||
|
assert(u64log2(16) == 4);
|
||||||
|
assert(u64log2(1024*1024) == 20);
|
||||||
|
assert(u64log2(1024*1024+5) == 20);
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
test_streq_ptr();
|
test_streq_ptr();
|
||||||
test_first_word();
|
test_first_word();
|
||||||
@ -363,6 +373,7 @@ int main(int argc, char *argv[]) {
|
|||||||
test_memdup_multiply();
|
test_memdup_multiply();
|
||||||
test_bus_path_escape();
|
test_bus_path_escape();
|
||||||
test_hostname_is_valid();
|
test_hostname_is_valid();
|
||||||
|
test_u64log2();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user