about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/sparc/bits/shm-pad.h
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2018-10-17 11:56:28 +0000
committerJoseph Myers <joseph@codesourcery.com>2018-10-17 11:56:28 +0000
commit729f34028a7f494b599a29889df825cf826b6de0 (patch)
tree240e9b7f62d704af1e262f1223bec5c077b5790c /sysdeps/unix/sysv/linux/sparc/bits/shm-pad.h
parent8c8d2a8aff71e0c53b372871f158c121289452cf (diff)
downloadglibc-729f34028a7f494b599a29889df825cf826b6de0.tar.gz
glibc-729f34028a7f494b599a29889df825cf826b6de0.tar.xz
glibc-729f34028a7f494b599a29889df825cf826b6de0.zip
Use single bits/shm.h for all architectures.
After my patch to move SHMLBA to its own header, the bits/shm.h
headers for architectures using the Linux kernel still vary in a few
ways: the use of __syscall_ulong_t; whether padding for 32-bit systems
is present before or after time fields, or missing altogether (mips,
x32); whether shm_segsz is before or after the time fields; whether,
if after time fields, there is extra padding before shm_segsz.

This patch arranges for a single header to be used.  __syscall_ulong_t
is safe to use everywhere, while bits/shm-pad.h is added with new
macros __SHM_PAD_AFTER_TIME, __SHM_PAD_BEFORE_TIME,
__SHM_SEGSZ_AFTER_TIME and __SHM_PAD_BETWEEN_TIME_AND_SEGSZ to
describe the differences.

Tested for x86_64 and x86, and with build-many-glibcs.py.

	* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
	bits/shm-pad.h.
	* sysdeps/unix/sysv/linux/bits/shm.h: Include <bits/shm-pad.h>.
	(shmatt_t): Define as __syscall_ulong_t.
	(__SHM_PAD_TIME): New macro, depending on [__SHM_PAD_BEFORE_TIME]
	and [__SHM_PAD_AFTER_TIME].
	(struct shmid_ds): Define time fields using __SHM_PAD_TIME.
	Define shm_segsz and associated padding based on
	[__SHM_SEGSZ_AFTER_TIME] and [__SHM_PAD_BETWEEN_TIME_AND_SEGSZ].
	Use __syscall_ulong_t instead of unsigned long int.
	[__USE_MISC] (struct shminfo): Use __syscall_ulong_t instead of
	unsigned long int.
	[__USE_MISC] (struct shm_info): Likewise.
	* sysdeps/unix/sysv/linux/bits/shm-pad.h: New file.
	* sysdeps/unix/sysv/linux/hppa/bits/shm-pad.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/shm-pad.h: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/shm-pad.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/shm-pad.h: Likewise.
	* sysdeps/unix/sysv/linux/x86/bits/shm-pad.h: Likewise.
	* sysdeps/unix/sysv/linux/hppa/bits/shm.h: Remove.
	* sysdeps/unix/sysv/linux/mips/bits/shm.h: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/shm.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/shm.h: Likewise.
	* sysdeps/unix/sysv/linux/x86/bits/shm.h: Likewise.
Diffstat (limited to 'sysdeps/unix/sysv/linux/sparc/bits/shm-pad.h')
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/shm-pad.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/shm-pad.h b/sysdeps/unix/sysv/linux/sparc/bits/shm-pad.h
new file mode 100644
index 0000000000..c4d0c2feb8
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/bits/shm-pad.h
@@ -0,0 +1,28 @@
+/* Define where padding goes in struct shmid_ds.  SPARC version.
+   Copyright (C) 2018 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_SHM_H
+# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
+#endif
+
+#include <bits/wordsize.h>
+
+#define __SHM_PAD_AFTER_TIME 0
+#define __SHM_PAD_BEFORE_TIME (__WORDSIZE == 32)
+#define __SHM_SEGSZ_AFTER_TIME 1
+#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0