This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Add ipc.h for aarch64


Copied sysdeps/unix/sysv/linux/mips/bits/ipc.h to (new file)
sysdeps/unix/sysv/linux/aarch64/bits/ipc.h
Did not change any of the contents.

This results in the "mode" file in "ipc_perm" changing from 16bits to
32bits - which matches up with the kernel definition.
Note that all other 64bit BE targets have this set in their own ipc.h

Without this patch, on Aarch64 Big Endian the mode field would end up in
the padding field, resulting in the failure of most LTP semaphore tests.


Regards,
Alan.


Changelog:

2014-10-21 Alan Hayward <alan.hayward@arm.com>

        * sysdeps/unix/sysv/linux/aarch64/bits/ipc.h: New file.





diff --git a/sysdeps/unix/sysv/linux/aarch64/bits/ipc.h
b/sysdeps/unix/sysv/linux/aarch64/bits/ipc.h
new file mode 100644
index 0000000..649e74a
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/aarch64/bits/ipc.h
@@ -0,0 +1,54 @@
+/* Copyright (C) 1995-2014 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SYS_IPC_H
+# error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
+#endif
+
+#include <bits/types.h>
+
+/* Mode bits for `msgget', `semget', and `shmget'.  */
+#define IPC_CREAT      01000           /* Create key if key does not
exist. */
+#define IPC_EXCL       02000           /* Fail if key exists.  */
+#define IPC_NOWAIT     04000           /* Return error on wait.  */
+
+/* Control commands for `msgctl', `semctl', and `shmctl'.  */
+#define IPC_RMID       0               /* Remove identifier.  */
+#define IPC_SET                1               /* Set `ipc_perm' options.
 */
+#define IPC_STAT       2               /* Get `ipc_perm' options.  */
+#ifdef __USE_GNU
+# define IPC_INFO      3               /* See ipcs.  */
+#endif
+
+/* Special key values. */
+#define IPC_PRIVATE    ((__key_t) 0)   /* Private key.  */
+
+
+/* Data structure used to pass permission information to IPC operations.
*/
+struct ipc_perm
+  {
+    __key_t __key;                     /* Key.  */
+    unsigned int uid;                  /* Owner's user ID.  */
+    unsigned int gid;                  /* Owner's group ID.  */
+    unsigned int cuid;                 /* Creator's user ID.  */
+    unsigned int cgid;                 /* Creator's group ID.  */
+    unsigned int mode;                 /* Read/write permission.  */
+    unsigned short int __seq;          /* Sequence number.  */
+    unsigned short int __pad1;
+    unsigned long int __glibc_reserved1;
+    unsigned long int __glibc_reserved2;
+};





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]