From 7635a88d320c665defd44085d3b9031d673fe1ee Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 1 Dec 2015 10:25:44 -0800 Subject: [PATCH] Add __CPU_MASK_TYPE for __cpu_mask Since x86-64 and x32 use the same set of sched_XXX system call interface: [hjl@gnu-6 linux-stable]$ grep sched_ arch/x86/entry/syscalls/syscall_64.tbl 24 common sched_yield sys_sched_yield 142 common sched_setparam sys_sched_setparam 143 common sched_getparam sys_sched_getparam 144 common sched_setscheduler sys_sched_setscheduler 145 common sched_getscheduler sys_sched_getscheduler 146 common sched_get_priority_max sys_sched_get_priority_max 147 common sched_get_priority_min sys_sched_get_priority_min 148 common sched_rr_get_interval sys_sched_rr_get_interval 203 common sched_setaffinity sys_sched_setaffinity 204 common sched_getaffinity sys_sched_getaffinity 314 common sched_setattr sys_sched_setattr 315 common sched_getattr sys_sched_getattr [hjl@gnu-6 linux-stable]$ __cpu_mask should be unsigned long long, instead of unsigned long, for x32. This patch adds __CPU_MASK_TYPE so that each architecture can define the proper type for __cpu_mask. [BZ #19313] * bits/typesizes.h (__CPU_MASK_TYPE): New. * sysdeps/mach/hurd/bits/typesizes.h (__CPU_MASK_TYPE): Likewise. * sysdeps/nacl/bits/typesizes.h (__CPU_MASK_TYPE): Likewise. * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__CPU_MASK_TYPE): Likewise. * sysdeps/unix/sysv/linux/generic/bits/typesizes.h (__CPU_MASK_TYPE): Likewise. * sysdeps/unix/sysv/linux/s390/bits/typesizes.h (__CPU_MASK_TYPE): Likewise. * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h (__CPU_MASK_TYPE): Likewise. * sysdeps/unix/sysv/linux/x86/bits/typesizes.h (__CPU_MASK_TYPE): * sysdeps/unix/sysv/linux/bits/sched.h (__cpu_mask): Replace unsigned long int with __CPU_MASK_TYPE. --- ChangeLog | 18 ++++++++++++++++++ bits/typesizes.h | 1 + sysdeps/mach/hurd/bits/typesizes.h | 1 + sysdeps/nacl/bits/typesizes.h | 1 + sysdeps/unix/sysv/linux/alpha/bits/typesizes.h | 1 + sysdeps/unix/sysv/linux/bits/sched.h | 2 +- .../unix/sysv/linux/generic/bits/typesizes.h | 1 + sysdeps/unix/sysv/linux/s390/bits/typesizes.h | 1 + sysdeps/unix/sysv/linux/sparc/bits/typesizes.h | 1 + sysdeps/unix/sysv/linux/x86/bits/typesizes.h | 1 + 10 files changed, 27 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index e22496ee49..9da4f3c75b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +2015-12-01 H.J. Lu + + [BZ #19313] + * bits/typesizes.h (__CPU_MASK_TYPE): New. + * sysdeps/mach/hurd/bits/typesizes.h (__CPU_MASK_TYPE): Likewise. + * sysdeps/nacl/bits/typesizes.h (__CPU_MASK_TYPE): Likewise. + * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__CPU_MASK_TYPE): + Likewise. + * sysdeps/unix/sysv/linux/generic/bits/typesizes.h (__CPU_MASK_TYPE): + Likewise. + * sysdeps/unix/sysv/linux/s390/bits/typesizes.h (__CPU_MASK_TYPE): + Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h (__CPU_MASK_TYPE): + Likewise. + * sysdeps/unix/sysv/linux/x86/bits/typesizes.h (__CPU_MASK_TYPE): + * sysdeps/unix/sysv/linux/bits/sched.h (__cpu_mask): Replace + unsigned long int with __CPU_MASK_TYPE. + 2015-12-01 Szabolcs Nagy * sysdeps/aarch64/libm-test-ulps: Regenerated. diff --git a/bits/typesizes.h b/bits/typesizes.h index 0c1e39c6a0..ec5853d805 100644 --- a/bits/typesizes.h +++ b/bits/typesizes.h @@ -59,6 +59,7 @@ #define __SSIZE_T_TYPE __SWORD_TYPE #define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE #define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE +#define __CPU_MASK_TYPE __ULONGWORD_TYPE #ifdef __LP64__ /* Tell the libc code that off_t and off64_t are actually the same type diff --git a/sysdeps/mach/hurd/bits/typesizes.h b/sysdeps/mach/hurd/bits/typesizes.h index 970e64e8f6..948517ed37 100644 --- a/sysdeps/mach/hurd/bits/typesizes.h +++ b/sysdeps/mach/hurd/bits/typesizes.h @@ -59,6 +59,7 @@ #define __SSIZE_T_TYPE __SWORD_TYPE #define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE #define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE +#define __CPU_MASK_TYPE __ULONGWORD_TYPE /* Number of descriptors that can fit in an `fd_set'. */ #define __FD_SETSIZE 256 diff --git a/sysdeps/nacl/bits/typesizes.h b/sysdeps/nacl/bits/typesizes.h index ed1b5dc7ab..572ff9fa91 100644 --- a/sysdeps/nacl/bits/typesizes.h +++ b/sysdeps/nacl/bits/typesizes.h @@ -59,6 +59,7 @@ #define __SSIZE_T_TYPE __SWORD_TYPE #define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE #define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE +#define __CPU_MASK_TYPE __ULONGWORD_TYPE /* All our foo64_t types match their foo_t counterparts. */ #define __OFF_T_MATCHES_OFF64_T 1 diff --git a/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h b/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h index b40a2c2f0b..aa00287fdb 100644 --- a/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h @@ -58,6 +58,7 @@ #define __SSIZE_T_TYPE __SWORD_TYPE #define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE #define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE +#define __CPU_MASK_TYPE __ULONGWORD_TYPE #define __FSWORD_T_TYPE __S32_TYPE /* Tell the libc code that off_t and off64_t are actually the same type diff --git a/sysdeps/unix/sysv/linux/bits/sched.h b/sysdeps/unix/sysv/linux/bits/sched.h index ae089df522..7bee1b6cc4 100644 --- a/sysdeps/unix/sysv/linux/bits/sched.h +++ b/sysdeps/unix/sysv/linux/bits/sched.h @@ -115,7 +115,7 @@ struct __sched_param # define __NCPUBITS (8 * sizeof (__cpu_mask)) /* Type for array elements in 'cpu_set_t'. */ -typedef unsigned long int __cpu_mask; +typedef __CPU_MASK_TYPE __cpu_mask; /* Basic access functions. */ # define __CPUELT(cpu) ((cpu) / __NCPUBITS) diff --git a/sysdeps/unix/sysv/linux/generic/bits/typesizes.h b/sysdeps/unix/sysv/linux/generic/bits/typesizes.h index de98a39017..22d857ff5b 100644 --- a/sysdeps/unix/sysv/linux/generic/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/generic/bits/typesizes.h @@ -60,6 +60,7 @@ #define __SSIZE_T_TYPE __SWORD_TYPE #define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE #define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE +#define __CPU_MASK_TYPE __ULONGWORD_TYPE #ifdef __LP64__ /* Tell the libc code that off_t and off64_t are actually the same type diff --git a/sysdeps/unix/sysv/linux/s390/bits/typesizes.h b/sysdeps/unix/sysv/linux/s390/bits/typesizes.h index 78d377c863..38af1204e9 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/s390/bits/typesizes.h @@ -65,6 +65,7 @@ #endif #define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE #define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE +#define __CPU_MASK_TYPE __ULONGWORD_TYPE #ifdef __s390x__ /* Tell the libc code that off_t and off64_t are actually the same type diff --git a/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h b/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h index 2167c28aeb..4b7cac6675 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h @@ -59,6 +59,7 @@ #define __SSIZE_T_TYPE __SWORD_TYPE #define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE #define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE +#define __CPU_MASK_TYPE __ULONGWORD_TYPE #if defined __arch64__ || defined __sparcv9 /* Tell the libc code that off_t and off64_t are actually the same type diff --git a/sysdeps/unix/sysv/linux/x86/bits/typesizes.h b/sysdeps/unix/sysv/linux/x86/bits/typesizes.h index 8889bc0039..f89d9d27f7 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/x86/bits/typesizes.h @@ -71,6 +71,7 @@ #define __BLKSIZE_T_TYPE __SYSCALL_SLONG_TYPE #define __FSID_T_TYPE struct { int __val[2]; } #define __SSIZE_T_TYPE __SWORD_TYPE +#define __CPU_MASK_TYPE __SYSCALL_ULONG_TYPE #ifdef __x86_64__ /* Tell the libc code that off_t and off64_t are actually the same type