summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/ipc_priv.h
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2016-11-07 17:29:30 -0200
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2016-12-28 20:28:56 -0200
commit1e5834c38a22bc6bee7bae4347f21baee5196724 (patch)
treed14964fe7c0d3c45e69879976b03d2469942bb41 /sysdeps/unix/sysv/linux/ipc_priv.h
parent63719cf1e378b1a01ec6a36cf0ab7462cfb7a6c6 (diff)
Refactor Linux ipc_priv header
Some architectures support the old-style IPC and require IPC_64 equal to 0x100 to be passed along SysV IPC syscalls, while new architectures should default to new IPC version (without the flags being set). This patch refactor current ipc_priv.h Linux headers in two directions: - Remove cross platform references (for instance alpha including powerpc definition) and add required definition for each required port. The idea is to avoid tie one architecture definition with another and make platform change independent. - Move all common definitions (the ipc syscall commands) on a common header, ipc_ops.h. * sysdeps/unix/sysv/linux/aarch64/ipc_priv.h: New file. * sysdeps/unix/sysv/linux/alpha/ipc_priv.h: Avoid included other arch definition and define its own. * sysdeps/unix/sysv/linux/ipc_ops.h: New file. * sysdeps/unix/sysv/linux/x86_64/ipc_priv.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/ipc_priv.h: Likewise. * sysdeps/unix/sysv/linux/mips/ipc_priv.h: Remove file. * sysdeps/unix/sysv/linux/mips/mips64/ipc_priv.h: New file. * sysdeps/unix/sysv/linux/ipc_priv.h: Move ipc syscall operation definitions to common header. * sysdeps/unix/sysv/linux/powerpc/ipc_priv.h: Use common syscall operation from ipc_ops.h.
Diffstat (limited to 'sysdeps/unix/sysv/linux/ipc_priv.h')
-rw-r--r--sysdeps/unix/sysv/linux/ipc_priv.h23
1 files changed, 8 insertions, 15 deletions
diff --git a/sysdeps/unix/sysv/linux/ipc_priv.h b/sysdeps/unix/sysv/linux/ipc_priv.h
index 7ded4638a3..9b97f00261 100644
--- a/sysdeps/unix/sysv/linux/ipc_priv.h
+++ b/sysdeps/unix/sysv/linux/ipc_priv.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1995-2016 Free Software Foundation, Inc.
+/* Old SysV permission definition for Linux. Default version.
+ Copyright (C) 1995-2016 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
@@ -15,7 +16,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#include <sys/ipc.h>
+#include <sys/ipc.h> /* For __key_t */
#define __IPC_64 0x100
@@ -30,17 +31,9 @@ struct __old_ipc_perm
unsigned short int __seq; /* Sequence number. */
};
+#define SEMCTL_ARG_ADDRESS(__arg) &__arg.array
-/* The codes for the functions to use the ipc syscall multiplexer. */
-#define IPCOP_semop 1
-#define IPCOP_semget 2
-#define IPCOP_semctl 3
-#define IPCOP_semtimedop 4
-#define IPCOP_msgsnd 11
-#define IPCOP_msgrcv 12
-#define IPCOP_msgget 13
-#define IPCOP_msgctl 14
-#define IPCOP_shmat 21
-#define IPCOP_shmdt 22
-#define IPCOP_shmget 23
-#define IPCOP_shmctl 24
+#define MSGRCV_ARGS(__msgp, __msgtyp) \
+ ((long int []){ (long int) __msgp, __msgtyp })
+
+#include <ipc_ops.h>