summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/systemd/systemd/0004-src-shared-cpu-set-util.h-add-__cpu_mask-definition.patch
blob: 0f75e8c12dee920523de9436942327df52d024ea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Handle __cpu_mask usage

Fixes errors:

src/test/test-cpu-set-util.c:18:54: error: '__cpu_mask' undeclared (first use in this function)
src/test/test-sizeof.c:73:14: error: '__cpu_mask' undeclared (first use in this function)

__cpu_mask is an internal type of glibc's cpu_set implementation, not
part of the POSIX definition, which is problematic when building with
musl, which does not define a matching type.  From inspection of musl's
sched.h, however, it is clear that the corresponding type would be
unsigned long, which does match glibc's actual __CPU_MASK_TYPE.  So,
add a typedef to cpu-set-util.h defining __cpu_mask appropriately.

Upstream-Status: Inappropriate [musl specific]

Signed-off-by: Scott Murray <scott.murray@konsulko.com>
---
 src/shared/cpu-set-util.h | 2 ++
 src/test/test-sizeof.c    | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/shared/cpu-set-util.h b/src/shared/cpu-set-util.h
index 27812dfd59..f698f9df83 100644
--- a/src/shared/cpu-set-util.h
+++ b/src/shared/cpu-set-util.h
@@ -6,6 +6,8 @@
 #include "macro.h"
 #include "missing_syscall.h"
 
+typedef unsigned long __cpu_mask;
+
 /* This wraps the libc interface with a variable to keep the allocated size. */
 typedef struct CPUSet {
         cpu_set_t *set;
diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c
index a710db5370..d1601ad929 100644
--- a/src/test/test-sizeof.c
+++ b/src/test/test-sizeof.c
@@ -1,6 +1,5 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 
-#include <sched.h>
 #include <stdio.h>
 #include <string.h>
 
@@ -8,6 +7,7 @@
 #include <float.h>
 
 #include "time-util.h"
+#include "cpu-set-util.h"
 
 /* Print information about various types. Useful when diagnosing
  * gcc diagnostics on an unfamiliar architecture. */