projects
/
ust.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix power of two computation
[ust.git]
/
libust
/
tracectl.c
diff --git
a/libust/tracectl.c
b/libust/tracectl.c
index 39756a55fec0e72602479593fce153408fc950d5..3624b867f6d9f7a39bcae586878b00ae3abdd0b2 100644
(file)
--- a/
libust/tracectl.c
+++ b/
libust/tracectl.c
@@
-456,18
+456,18
@@
static int do_cmd_get_subbuf_size(const char *recvbuf, struct ustcomm_source *sr
return retval;
}
return retval;
}
-static unsigned int poweroftwo(unsigned int x)
-{
- unsigned int power2 = 1;
- unsigned int hardcoded = 2147483648u; /* FIX max 2^31 */
-
- if (x < 2)
- return 2;
+/* Return the power of two which is equal or higher to v */
- while (power2 < x && power2 < hardcoded)
- power2 *= 2;
-
- return power2;
+static unsigned int pow2_higher_or_eq(unsigned int v)
+{
+ int hb = fls(v);
+ int hbm1 = hb-1;
+ int retval = 1<<(hb-1);
+
+ if(v-retval == 0)
+ return retval;
+ else
+ return retval<<1;
}
static int do_cmd_set_subbuf_size(const char *recvbuf, struct ustcomm_source *src)
}
static int do_cmd_set_subbuf_size(const char *recvbuf, struct ustcomm_source *src)
@@
-491,9
+491,10
@@
static int do_cmd_set_subbuf_size(const char *recvbuf, struct ustcomm_source *sr
goto end;
}
goto end;
}
- power = poweroftwo(size);
+ power = pow2_higher_or_eq(size);
+ power = max_t(unsigned int, 2u, power);
if (power != size)
if (power != size)
- WARN("using the next
2^n
= %u\n", power);
+ WARN("using the next
power of two for buffer size
= %u\n", power);
ltt_lock_traces();
trace = _ltt_trace_find_setup(trace_name);
ltt_lock_traces();
trace = _ltt_trace_find_setup(trace_name);
This page took
0.028264 seconds
and
4
git commands to generate.