blob: 6766c31b71f88871ba3cdc938d5ad31f019bef5c (
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
|
From 7205aca835ba7fca285644d1c9145a39742ef94f Mon Sep 17 00:00:00 2001
From: Andrew Pinski <apinski@cavium.com>
Date: Mon, 27 Oct 2014 00:59:29 -0700
Subject: [PATCH 06/32] Allow fd_mask type not be an array of long.
Even though XPG4.2 requires fd_set member be a long, AARCH64:ILP32
needs it to be the same size as AARCH64:LP64 for big-endian so we
need it to be long long.
* misc/sys/select.h (__FD_MASK_TYPE): Define.
(__FD_MASK_CONST): Define.
(__fd_mask): Change to base on __FD_MASK_TYPE.
(__FD_MASK): Use __FD_MASK_CONST.
---
misc/sys/select.h | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/misc/sys/select.h b/misc/sys/select.h
index 941588d..0ca660e 100644
--- a/misc/sys/select.h
+++ b/misc/sys/select.h
@@ -49,16 +49,20 @@ typedef __suseconds_t suseconds_t;
# define __suseconds_t_defined
#endif
+/* The fd_set member is required to be an array of longs by XPG4.2. */
+#ifndef __FD_MASK_TYPE
+#define __FD_MASK_TYPE long
+#define __FD_MASK_CONST(a) a##ul
+#endif
-/* The fd_set member is required to be an array of longs. */
-typedef long int __fd_mask;
+typedef __FD_MASK_TYPE __fd_mask;
/* Some versions of <linux/posix_types.h> define this macros. */
#undef __NFDBITS
/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */
#define __NFDBITS (8 * (int) sizeof (__fd_mask))
#define __FD_ELT(d) ((d) / __NFDBITS)
-#define __FD_MASK(d) ((__fd_mask) (1UL << ((d) % __NFDBITS)))
+#define __FD_MASK(d) ((__fd_mask) (__FD_MASK_CONST(1) << ((d) % __NFDBITS)))
/* fd_set for select and pselect. */
typedef struct
--
1.9.3
|