hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
kernel/include/uapi/linux/socket.h
....@@ -6,17 +6,24 @@
66 * Desired design of maximum size and alignment (see RFC2553)
77 */
88 #define _K_SS_MAXSIZE 128 /* Implementation specific max size */
9
-#define _K_SS_ALIGNSIZE (__alignof__ (struct sockaddr *))
10
- /* Implementation specific desired alignment */
119
1210 typedef unsigned short __kernel_sa_family_t;
1311
12
+/*
13
+ * The definition uses anonymous union and struct in order to control the
14
+ * default alignment.
15
+ */
1416 struct __kernel_sockaddr_storage {
15
- __kernel_sa_family_t ss_family; /* address family */
16
- /* Following field(s) are implementation specific */
17
- char __data[_K_SS_MAXSIZE - sizeof(unsigned short)];
17
+ union {
18
+ struct {
19
+ __kernel_sa_family_t ss_family; /* address family */
20
+ /* Following field(s) are implementation specific */
21
+ char __data[_K_SS_MAXSIZE - sizeof(unsigned short)];
1822 /* space to achieve desired size, */
1923 /* _SS_MAXSIZE value minus size of ss_family */
20
-} __attribute__ ((aligned(_K_SS_ALIGNSIZE))); /* force desired alignment */
24
+ };
25
+ void *__align; /* implementation specific desired alignment */
26
+ };
27
+};
2128
2229 #endif /* _UAPI_LINUX_SOCKET_H */