package/util-linux: fix build with -O0
Fix the following build failure with -O0 raised since bump to version 2.39 in commitad276d94a3
and2fa4168c8b
: libuuid/src/gen_uuid.c: In function 'uuid_generate_time_generic': libuuid/src/gen_uuid.c:536:33: error: initializer element is not constant THREAD_LOCAL int cache_size = cs_min; ^~~~~~ Fixes: - http://autobuild.buildroot.org/results/7c9b8508345ffaba167c08521fb865d76555be1d - http://autobuild.buildroot.org/results/2f80a5cdb523cc3c8c0f3693607a1be036b2ae98 Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
parent
fe8f95a61e
commit
8740387457
@ -0,0 +1,80 @@
|
||||
From bcd11dece7d278bb0b76b138d08dedea80fa8262 Mon Sep 17 00:00:00 2001
|
||||
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
Date: Tue, 7 Nov 2023 18:43:57 +0100
|
||||
Subject: [PATCH] libuuid/src/gen_uuid.c: fix cs_min declaration
|
||||
|
||||
Define cs_min through a define and not a const int to avoid the
|
||||
following build failure with -O0 raised since version 2.39 and
|
||||
https://github.com/util-linux/util-linux/commit/2fa4168c8bc9d5438bc1dfadda293c7c21b6fa59:
|
||||
|
||||
libuuid/src/gen_uuid.c: In function 'uuid_generate_time_generic':
|
||||
libuuid/src/gen_uuid.c:536:33: error: initializer element is not constant
|
||||
THREAD_LOCAL int cache_size = cs_min;
|
||||
^~~~~~
|
||||
|
||||
For consistency, also use define for cs_max and cs_factor
|
||||
|
||||
Fixes:
|
||||
- http://autobuild.buildroot.org/results/2f80a5cdb523cc3c8c0f3693607a1be036b2ae98
|
||||
|
||||
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
Upstream: https://github.com/util-linux/util-linux/commit/07e5c29d501c19e7af84fecb5915e0f9f94cb49f
|
||||
---
|
||||
libuuid/src/gen_uuid.c | 19 ++++++++++---------
|
||||
1 file changed, 10 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/libuuid/src/gen_uuid.c b/libuuid/src/gen_uuid.c
|
||||
index 619ef0131..db793c374 100644
|
||||
--- a/libuuid/src/gen_uuid.c
|
||||
+++ b/libuuid/src/gen_uuid.c
|
||||
@@ -518,6 +518,10 @@ int __uuid_generate_time_cont(uuid_t out, int *num, uint32_t cont_offset)
|
||||
return __uuid_generate_time_internal(out, num, cont_offset);
|
||||
}
|
||||
|
||||
+#define CS_MIN (1<<6)
|
||||
+#define CS_MAX (1<<18)
|
||||
+#define CS_FACTOR 2
|
||||
+
|
||||
/*
|
||||
* Generate time-based UUID and store it to @out
|
||||
*
|
||||
@@ -529,11 +533,8 @@ int __uuid_generate_time_cont(uuid_t out, int *num, uint32_t cont_offset)
|
||||
static int uuid_generate_time_generic(uuid_t out) {
|
||||
#ifdef HAVE_TLS
|
||||
/* thread local cache for uuidd based requests */
|
||||
- const int cs_min = (1<<6);
|
||||
- const int cs_max = (1<<18);
|
||||
- const int cs_factor = 2;
|
||||
THREAD_LOCAL int num = 0;
|
||||
- THREAD_LOCAL int cache_size = cs_min;
|
||||
+ THREAD_LOCAL int cache_size = CS_MIN;
|
||||
THREAD_LOCAL int last_used = 0;
|
||||
THREAD_LOCAL struct uuid uu;
|
||||
THREAD_LOCAL time_t last_time = 0;
|
||||
@@ -552,10 +553,10 @@ static int uuid_generate_time_generic(uuid_t out) {
|
||||
* Start with a small cache size to cover short running applications
|
||||
* and adjust the cache size over the runntime.
|
||||
*/
|
||||
- if ((last_used == cache_size) && (cache_size < cs_max))
|
||||
- cache_size *= cs_factor;
|
||||
- else if ((last_used < (cache_size / cs_factor)) && (cache_size > cs_min))
|
||||
- cache_size /= cs_factor;
|
||||
+ if ((last_used == cache_size) && (cache_size < CS_MAX))
|
||||
+ cache_size *= CS_FACTOR;
|
||||
+ else if ((last_used < (cache_size / CS_FACTOR)) && (cache_size > CS_MIN))
|
||||
+ cache_size /= CS_FACTOR;
|
||||
|
||||
num = cache_size;
|
||||
|
||||
@@ -568,7 +569,7 @@ static int uuid_generate_time_generic(uuid_t out) {
|
||||
}
|
||||
/* request to daemon failed, reset cache */
|
||||
num = 0;
|
||||
- cache_size = cs_min;
|
||||
+ cache_size = CS_MIN;
|
||||
}
|
||||
if (num > 0) { /* serve uuid from cache */
|
||||
uu.time_low++;
|
||||
--
|
||||
2.43.0
|
||||
|
Loading…
Reference in New Issue
Block a user