]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Move SHMLBA to its own header.
authorJoseph Myers <joseph@codesourcery.com>
Wed, 17 Oct 2018 11:55:10 +0000 (11:55 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Wed, 17 Oct 2018 11:55:10 +0000 (11:55 +0000)
One difference between bits/shm.h headers for architectures using the
Linux kernel is the definition of SHMLBA.  This was noted in
<https://sourceware.org/ml/libc-alpha/2018-09/msg00175.html> as a
reason why even a new architecture (C-SKY) might need its own
bits/shm.h; thus, splitting it out of bits/shm.h can allow less
duplication of headers for new architectures.

This patch moves that definition to its own header, bits/shmlba.h, to
allow more sharing of headers between architectures.  That move allows
the arm, ia64 and sh variants of bits/shm.h to be removed, as they had
no other significant differences from the generic bits/shm.h; powerpc
and x86 have their own bits/shm.h but do not need to get their own
bits/shmlba.h because they use the same SHMLBA as the generic header.
Other architectures with their own bits/shm.h get their own
bits/shmlba.h without being able to remove their own bits/shm.h until
the generic one has been adapted to be able to handle more
architectures (where, in addition to the differences seen for
bits/msq.h and bits/sem.h, the position of shm_segsz in struct
shmid_ds also depends on the architecture).

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

* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
bits/shmlba.h.
* sysdeps/unix/sysv/linux/bits/shm.h: Include <bits/shmlba.h>.
(SHMLBA): Remove macro.
(__getpagesize): Remove function declaration.
* sysdeps/unix/sysv/linux/hppa/bits/shm.h: Include
<bits/shmlba.h>.
(SHMLBA): Remove macro.
* sysdeps/unix/sysv/linux/mips/bits/shm.h: Include
<bits/shmlba.h>.
(SHMLBA): Remove macro.
* sysdeps/unix/sysv/linux/powerpc/bits/shm.h: Include
<bits/shmlba.h>.
(SHMLBA): Remove macro.
(__getpagesize): Remove function declaration.
* sysdeps/unix/sysv/linux/sparc/bits/shm.h: Include
<bits/shmlba.h>.
(SHMLBA): Remove macro.
(__getshmlba): Remove function declaration.
* sysdeps/unix/sysv/linux/x86/bits/shm.h: Include <bits/shmlba.h>.
(SHMLBA): Remove macro.
(__getpagesize): Remove function declaration.
* sysdeps/unix/sysv/linux/arm/bits/shm.h: Remove file.
* sysdeps/unix/sysv/linux/ia64/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/sh/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/bits/shmlba.h: New file.
* sysdeps/unix/sysv/linux/arm/bits/shmlba.h: Likewise.
* sysdeps/unix/sysv/linux/hppa/bits/shmlba.h: Likewise.
* sysdeps/unix/sysv/linux/ia64/bits/shmlba.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/shmlba.h: Likewise.
* sysdeps/unix/sysv/linux/sh/bits/shmlba.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/shmlba.h: Likewise.

18 files changed:
ChangeLog
sysdeps/unix/sysv/linux/Makefile
sysdeps/unix/sysv/linux/arm/bits/shm.h [deleted file]
sysdeps/unix/sysv/linux/arm/bits/shmlba.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/bits/shm.h
sysdeps/unix/sysv/linux/bits/shmlba.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/hppa/bits/shm.h
sysdeps/unix/sysv/linux/hppa/bits/shmlba.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/ia64/bits/shm.h [deleted file]
sysdeps/unix/sysv/linux/ia64/bits/shmlba.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/mips/bits/shm.h
sysdeps/unix/sysv/linux/mips/bits/shmlba.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/powerpc/bits/shm.h
sysdeps/unix/sysv/linux/sh/bits/shm.h [deleted file]
sysdeps/unix/sysv/linux/sh/bits/shmlba.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/sparc/bits/shm.h
sysdeps/unix/sysv/linux/sparc/bits/shmlba.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/x86/bits/shm.h

index d13436c24188a5a056d76991c4b4ff3f189024e6..0b2100f6e916280fa83697774ea74dccf4294434 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,38 @@
+2018-10-17  Joseph Myers  <joseph@codesourcery.com>
+
+       * sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
+       bits/shmlba.h.
+       * sysdeps/unix/sysv/linux/bits/shm.h: Include <bits/shmlba.h>.
+       (SHMLBA): Remove macro.
+       (__getpagesize): Remove function declaration.
+       * sysdeps/unix/sysv/linux/hppa/bits/shm.h: Include
+       <bits/shmlba.h>.
+       (SHMLBA): Remove macro.
+       * sysdeps/unix/sysv/linux/mips/bits/shm.h: Include
+       <bits/shmlba.h>.
+       (SHMLBA): Remove macro.
+       * sysdeps/unix/sysv/linux/powerpc/bits/shm.h: Include
+       <bits/shmlba.h>.
+       (SHMLBA): Remove macro.
+       (__getpagesize): Remove function declaration.
+       * sysdeps/unix/sysv/linux/sparc/bits/shm.h: Include
+       <bits/shmlba.h>.
+       (SHMLBA): Remove macro.
+       (__getshmlba): Remove function declaration.
+       * sysdeps/unix/sysv/linux/x86/bits/shm.h: Include <bits/shmlba.h>.
+       (SHMLBA): Remove macro.
+       (__getpagesize): Remove function declaration.
+       * sysdeps/unix/sysv/linux/arm/bits/shm.h: Remove file.
+       * sysdeps/unix/sysv/linux/ia64/bits/shm.h: Likewise.
+       * sysdeps/unix/sysv/linux/sh/bits/shm.h: Likewise.
+       * sysdeps/unix/sysv/linux/bits/shmlba.h: New file.
+       * sysdeps/unix/sysv/linux/arm/bits/shmlba.h: Likewise.
+       * sysdeps/unix/sysv/linux/hppa/bits/shmlba.h: Likewise.
+       * sysdeps/unix/sysv/linux/ia64/bits/shmlba.h: Likewise.
+       * sysdeps/unix/sysv/linux/mips/bits/shmlba.h: Likewise.
+       * sysdeps/unix/sysv/linux/sh/bits/shmlba.h: Likewise.
+       * sysdeps/unix/sysv/linux/sparc/bits/shmlba.h: Likewise.
+
 2018-10-17  Stefan Liebler  <stli@linux.ibm.com>
 
        [BZ #23275]
index edb1d29bf32b1448a44cd725a97b863c29c781e4..27c7ef6a55437d1266e3a00c82df3645f1a3fb8a 100644 (file)
@@ -43,7 +43,7 @@ sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \
                  bits/siginfo-arch.h bits/siginfo-consts-arch.h \
                  bits/procfs.h bits/procfs-id.h bits/procfs-extra.h \
                  bits/procfs-prregset.h bits/mman-map-flags-generic.h \
-                 bits/msq-pad.h bits/sem-pad.h
+                 bits/msq-pad.h bits/sem-pad.h bits/shmlba.h
 
 tests += tst-clone tst-clone2 tst-clone3 tst-fanotify tst-personality \
         tst-quota tst-sync_file_range tst-sysconf-iov_max tst-ttyname \
diff --git a/sysdeps/unix/sysv/linux/arm/bits/shm.h b/sysdeps/unix/sysv/linux/arm/bits/shm.h
deleted file mode 100644 (file)
index e3d4916..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/* Copyright (C) 1995-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 include <bits/shm.h> directly; use <sys/shm.h> instead."
-#endif
-
-#include <bits/types.h>
-
-/* Permission flag for shmget.  */
-#define SHM_R          0400            /* or S_IRUGO from <linux/stat.h> */
-#define SHM_W          0200            /* or S_IWUGO from <linux/stat.h> */
-
-/* Flags for `shmat'.  */
-#define SHM_RDONLY     010000          /* attach read-only else read-write */
-#define SHM_RND                020000          /* round attach address to SHMLBA */
-#define SHM_REMAP      040000          /* take-over region on attach */
-#define SHM_EXEC       0100000         /* execution access */
-
-/* Commands for `shmctl'.  */
-#define SHM_LOCK       11              /* lock segment (root only) */
-#define SHM_UNLOCK     12              /* unlock segment (root only) */
-
-__BEGIN_DECLS
-
-/* Segment low boundary address multiple.  */
-#define SHMLBA         (__getpagesize () << 2)
-extern int __getpagesize (void) __THROW __attribute__ ((__const__));
-
-
-/* Type to count number of attaches.  */
-typedef unsigned long int shmatt_t;
-
-/* Data structure describing a shared memory segment.  */
-struct shmid_ds
-  {
-    struct ipc_perm shm_perm;          /* operation permission struct */
-    size_t shm_segsz;                  /* size of segment in bytes */
-    __time_t shm_atime;                        /* time of last shmat() */
-    unsigned long int __glibc_reserved1;
-    __time_t shm_dtime;                        /* time of last shmdt() */
-    unsigned long int __glibc_reserved2;
-    __time_t shm_ctime;                        /* time of last change by shmctl() */
-    unsigned long int __glibc_reserved3;
-    __pid_t shm_cpid;                  /* pid of creator */
-    __pid_t shm_lpid;                  /* pid of last shmop */
-    shmatt_t shm_nattch;               /* number of current attaches */
-    unsigned long int __glibc_reserved4;
-    unsigned long int __glibc_reserved5;
-  };
-
-#ifdef __USE_MISC
-
-/* ipcs ctl commands */
-# define SHM_STAT      13
-# define SHM_INFO      14
-# define SHM_STAT_ANY  15
-
-/* shm_mode upper byte flags */
-# define SHM_DEST      01000   /* segment will be destroyed on last detach */
-# define SHM_LOCKED    02000   /* segment will not be swapped */
-# define SHM_HUGETLB   04000   /* segment is mapped via hugetlb */
-# define SHM_NORESERVE 010000  /* don't check for reservations */
-
-struct shminfo
-  {
-    unsigned long int shmmax;
-    unsigned long int shmmin;
-    unsigned long int shmmni;
-    unsigned long int shmseg;
-    unsigned long int shmall;
-    unsigned long int __glibc_reserved1;
-    unsigned long int __glibc_reserved2;
-    unsigned long int __glibc_reserved3;
-    unsigned long int __glibc_reserved4;
-  };
-
-struct shm_info
-  {
-    int used_ids;
-    unsigned long int shm_tot; /* total allocated shm */
-    unsigned long int shm_rss; /* total resident shm */
-    unsigned long int shm_swp; /* total swapped shm */
-    unsigned long int swap_attempts;
-    unsigned long int swap_successes;
-  };
-
-#endif /* __USE_MISC */
-
-__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/arm/bits/shmlba.h b/sysdeps/unix/sysv/linux/arm/bits/shmlba.h
new file mode 100644 (file)
index 0000000..521a325
--- /dev/null
@@ -0,0 +1,29 @@
+/* Define SHMLBA.  ARM 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/shmlba.h> directly; include <sys/shm.h> instead."
+#endif
+
+__BEGIN_DECLS
+
+/* Segment low boundary address multiple.  */
+#define SHMLBA         (__getpagesize () << 2)
+extern int __getpagesize (void) __THROW __attribute__ ((__const__));
+
+__END_DECLS
index 0f10d94f1f834fcf71779ce3a4f9b934af6a4148..c305ee4e72fbaed5076aec15d243cb9ab5b097ec 100644 (file)
@@ -21,6 +21,7 @@
 
 #include <bits/types.h>
 #include <bits/wordsize.h>
+#include <bits/shmlba.h>
 
 /* Permission flag for shmget.  */
 #define SHM_R          0400            /* or S_IRUGO from <linux/stat.h> */
 
 __BEGIN_DECLS
 
-/* Segment low boundary address multiple.  */
-#define SHMLBA         (__getpagesize ())
-extern int __getpagesize (void) __THROW __attribute__ ((__const__));
-
-
 /* Type to count number of attaches.  */
 typedef unsigned long int shmatt_t;
 
diff --git a/sysdeps/unix/sysv/linux/bits/shmlba.h b/sysdeps/unix/sysv/linux/bits/shmlba.h
new file mode 100644 (file)
index 0000000..aa10b2b
--- /dev/null
@@ -0,0 +1,29 @@
+/* Define SHMLBA.  Generic 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/shmlba.h> directly; include <sys/shm.h> instead."
+#endif
+
+__BEGIN_DECLS
+
+/* Segment low boundary address multiple.  */
+#define SHMLBA         (__getpagesize ())
+extern int __getpagesize (void) __THROW __attribute__ ((__const__));
+
+__END_DECLS
index 4967c94190be8ceb2028c5addd74cff4403ad1c7..fed18e491a5e26e2ee81db8243ff90b776b04350 100644 (file)
@@ -21,6 +21,7 @@
 
 #include <bits/types.h>
 #include <bits/wordsize.h>
+#include <bits/shmlba.h>
 
 /* Permission flag for shmget.  */
 #define SHM_R          0400            /* or S_IRUGO from <linux/stat.h> */
@@ -36,9 +37,6 @@
 #define SHM_LOCK       11              /* lock segment (root only) */
 #define SHM_UNLOCK     12              /* unlock segment (root only) */
 
-/* Segment low boundary address multiple.  */
-#define SHMLBA         0x1000
-
 /* Type to count number of attaches.  */
 typedef unsigned long int shmatt_t;
 
diff --git a/sysdeps/unix/sysv/linux/hppa/bits/shmlba.h b/sysdeps/unix/sysv/linux/hppa/bits/shmlba.h
new file mode 100644 (file)
index 0000000..4282977
--- /dev/null
@@ -0,0 +1,24 @@
+/* Define SHMLBA.  HPPA 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/shmlba.h> directly; include <sys/shm.h> instead."
+#endif
+
+/* Segment low boundary address multiple.  */
+#define SHMLBA         0x1000
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/shm.h b/sysdeps/unix/sysv/linux/ia64/bits/shm.h
deleted file mode 100644 (file)
index 814f61b..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Copyright (C) 2000-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 include <bits/shm.h> directly; use <sys/shm.h> instead."
-#endif
-
-#include <sys/types.h>
-
-/* Permission flag for shmget.  */
-#define SHM_R           0400            /* or S_IRUGO from <linux/stat.h> */
-#define SHM_W           0200            /* or S_IWUGO from <linux/stat.h> */
-
-/* Flags for `shmat'.  */
-#define SHM_RDONLY     010000          /* attach read-only else read-write */
-#define SHM_RND                020000          /* round attach address to SHMLBA */
-#define SHM_REMAP      040000          /* take-over region on attach */
-#define SHM_EXEC       0100000         /* execution access */
-
-/* Commands for `shmctl'.  */
-#define SHM_LOCK       11              /* lock segment (root only) */
-#define SHM_UNLOCK     12              /* unlock segment (root only) */
-
-/* Segment low boundary address multiple.  */
-#define SHMLBA         (1024 * 1024)
-
-/* Type to count number of attaches.  */
-typedef unsigned long int shmatt_t;
-
-/* Data structure describing a shared memory segment.  */
-struct shmid_ds
-  {
-    struct ipc_perm shm_perm;          /* operation permission struct */
-    size_t shm_segsz;                  /* size of segment in bytes */
-    __time_t shm_atime;                        /* time of last shmat() */
-    __time_t shm_dtime;                        /* time of last shmdt() */
-    __time_t shm_ctime;                        /* time of last change by shmctl() */
-    __pid_t shm_cpid;                  /* pid of creator */
-    __pid_t shm_lpid;                  /* pid of last shmop */
-    shmatt_t shm_nattch;               /* number of current attaches */
-    unsigned long int __glibc_reserved1;
-    unsigned long int __glibc_reserved2;
-  };
-
-#ifdef __USE_MISC
-
-/* ipcs ctl commands */
-# define SHM_STAT      13
-# define SHM_INFO      14
-# define SHM_STAT_ANY  15
-
-/* shm_mode upper byte flags */
-# define SHM_DEST      01000   /* segment will be destroyed on last detach */
-# define SHM_LOCKED    02000   /* segment will not be swapped */
-# define SHM_HUGETLB   04000   /* segment is mapped via hugetlb */
-# define SHM_NORESERVE 010000  /* don't check for reservations */
-
-struct shminfo
-  {
-    unsigned long int shmmax;
-    unsigned long int shmmin;
-    unsigned long int shmmni;
-    unsigned long int shmseg;
-    unsigned long int shmall;
-    unsigned long int __glibc_reserved1;
-    unsigned long int __glibc_reserved2;
-    unsigned long int __glibc_reserved3;
-    unsigned long int __glibc_reserved4;
-  };
-
-struct shm_info
-  {
-    int used_ids;
-    unsigned long int shm_tot; /* total allocated shm */
-    unsigned long int shm_rss; /* total resident shm */
-    unsigned long int shm_swp; /* total swapped shm */
-    unsigned long int swap_attempts;
-    unsigned long int swap_successes;
-  };
-
-#endif /* __USE_MISC */
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/shmlba.h b/sysdeps/unix/sysv/linux/ia64/bits/shmlba.h
new file mode 100644 (file)
index 0000000..01c9f2e
--- /dev/null
@@ -0,0 +1,24 @@
+/* Define SHMLBA.  IA64 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/shmlba.h> directly; include <sys/shm.h> instead."
+#endif
+
+/* Segment low boundary address multiple.  */
+#define SHMLBA         (1024 * 1024)
index 22068d7729d9a48428866b1c865d66bad1d758f1..4320bd4c7c327b40aed11b84454691845a32f2a8 100644 (file)
@@ -20,6 +20,7 @@
 #endif
 
 #include <bits/types.h>
+#include <bits/shmlba.h>
 
 /* Permission flag for shmget.  */
 #define SHM_R          0400            /* or S_IRUGO from <linux/stat.h> */
@@ -35,9 +36,6 @@
 #define SHM_LOCK       11              /* lock segment (root only) */
 #define SHM_UNLOCK     12              /* unlock segment (root only) */
 
-/* Segment low boundary address multiple.  */
-#define SHMLBA         0x40000
-
 
 /* Type to count number of attaches.  */
 typedef unsigned long int shmatt_t;
diff --git a/sysdeps/unix/sysv/linux/mips/bits/shmlba.h b/sysdeps/unix/sysv/linux/mips/bits/shmlba.h
new file mode 100644 (file)
index 0000000..132943b
--- /dev/null
@@ -0,0 +1,24 @@
+/* Define SHMLBA.  MIPS 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/shmlba.h> directly; include <sys/shm.h> instead."
+#endif
+
+/* Segment low boundary address multiple.  */
+#define SHMLBA         0x40000
index 879023fb9a2e37649ad7f68902bf41b0d4ee1411..a41a1ab33c1e2dc0ff4b5fb5facdfeeb706942ad 100644 (file)
@@ -20,6 +20,7 @@
 #endif
 
 #include <bits/types.h>
+#include <bits/shmlba.h>
 
 /* Permission flag for shmget.  */
 #define SHM_R          0400            /* or S_IRUGO from <linux/stat.h> */
 
 __BEGIN_DECLS
 
-/* Segment low boundary address multiple.  */
-#define SHMLBA         (__getpagesize ())
-extern int __getpagesize (void) __THROW __attribute__ ((__const__));
-
 
 /* Type to count number of attaches.  */
 typedef unsigned long int shmatt_t;
diff --git a/sysdeps/unix/sysv/linux/sh/bits/shm.h b/sysdeps/unix/sysv/linux/sh/bits/shm.h
deleted file mode 100644 (file)
index 25ca3a2..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/* Copyright (C) 1995-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 include <bits/shm.h> directly; use <sys/shm.h> instead."
-#endif
-
-#include <bits/types.h>
-
-/* Permission flag for shmget.  */
-#define SHM_R          0400            /* or S_IRUGO from <linux/stat.h> */
-#define SHM_W          0200            /* or S_IWUGO from <linux/stat.h> */
-
-/* Flags for `shmat'.  */
-#define SHM_RDONLY     010000          /* attach read-only else read-write */
-#define SHM_RND                020000          /* round attach address to SHMLBA */
-#define SHM_REMAP      040000          /* take-over region on attach */
-#define SHM_EXEC       0100000         /* execution access */
-
-/* Commands for `shmctl'.  */
-#define SHM_LOCK       11              /* lock segment (root only) */
-#define SHM_UNLOCK     12              /* unlock segment (root only) */
-
-__BEGIN_DECLS
-
-/* Segment low boundary address multiple.  */
-#define SHMLBA         0x4000
-
-/* Type to count number of attaches.  */
-typedef unsigned long int shmatt_t;
-
-/* Data structure describing a shared memory segment.  */
-struct shmid_ds
-  {
-    struct ipc_perm shm_perm;          /* operation permission struct */
-    size_t shm_segsz;                  /* size of segment in bytes */
-    __time_t shm_atime;                        /* time of last shmat() */
-    unsigned long int __glibc_reserved1;
-    __time_t shm_dtime;                        /* time of last shmdt() */
-    unsigned long int __glibc_reserved2;
-    __time_t shm_ctime;                        /* time of last change by shmctl() */
-    unsigned long int __glibc_reserved3;
-    __pid_t shm_cpid;                  /* pid of creator */
-    __pid_t shm_lpid;                  /* pid of last shmop */
-    shmatt_t shm_nattch;               /* number of current attaches */
-    unsigned long int __glibc_reserved4;
-    unsigned long int __glibc_reserved5;
-  };
-
-#ifdef __USE_MISC
-
-/* ipcs ctl commands */
-# define SHM_STAT      13
-# define SHM_INFO      14
-# define SHM_STAT_ANY  15
-
-/* shm_mode upper byte flags */
-# define SHM_DEST      01000   /* segment will be destroyed on last detach */
-# define SHM_LOCKED    02000   /* segment will not be swapped */
-# define SHM_HUGETLB   04000   /* segment is mapped via hugetlb */
-# define SHM_NORESERVE 010000  /* don't check for reservations */
-
-struct shminfo
-  {
-    unsigned long int shmmax;
-    unsigned long int shmmin;
-    unsigned long int shmmni;
-    unsigned long int shmseg;
-    unsigned long int shmall;
-    unsigned long int __glibc_reserved1;
-    unsigned long int __glibc_reserved2;
-    unsigned long int __glibc_reserved3;
-    unsigned long int __glibc_reserved4;
-  };
-
-struct shm_info
-  {
-    int used_ids;
-    unsigned long int shm_tot; /* total allocated shm */
-    unsigned long int shm_rss; /* total resident shm */
-    unsigned long int shm_swp; /* total swapped shm */
-    unsigned long int swap_attempts;
-    unsigned long int swap_successes;
-  };
-
-#endif /* __USE_MISC */
-
-__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/sh/bits/shmlba.h b/sysdeps/unix/sysv/linux/sh/bits/shmlba.h
new file mode 100644 (file)
index 0000000..5c337b3
--- /dev/null
@@ -0,0 +1,24 @@
+/* Define SHMLBA.  SH 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/shmlba.h> directly; include <sys/shm.h> instead."
+#endif
+
+/* Segment low boundary address multiple.  */
+#define SHMLBA         0x4000
index d967f167d961eb5ed370a0955f3dc7e6f1bca95c..5262a79210357e9e0aef593c709a7eadd0981667 100644 (file)
@@ -21,6 +21,7 @@
 
 #include <bits/types.h>
 #include <bits/wordsize.h>
+#include <bits/shmlba.h>
 
 /* Permission flag for shmget.  */
 #define SHM_R          0400            /* or S_IRUGO from <linux/stat.h> */
 
 __BEGIN_DECLS
 
-/* Segment low boundary address multiple.  */
-#define SHMLBA         (__getshmlba ())
-extern int __getshmlba (void) __attribute__ ((__const__));
-
 
 /* Type to count number of attaches.  */
 typedef unsigned long int shmatt_t;
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/shmlba.h b/sysdeps/unix/sysv/linux/sparc/bits/shmlba.h
new file mode 100644 (file)
index 0000000..fe2a76b
--- /dev/null
@@ -0,0 +1,29 @@
+/* Define SHMLBA.  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/shmlba.h> directly; include <sys/shm.h> instead."
+#endif
+
+__BEGIN_DECLS
+
+/* Segment low boundary address multiple.  */
+#define SHMLBA         (__getshmlba ())
+extern int __getshmlba (void) __attribute__ ((__const__));
+
+__END_DECLS
index 767bb78573d57e5d936af23ef89b2385b2765069..4b88ff09aa6de8e70f9652f6c5f5320a5a590c9e 100644 (file)
@@ -20,6 +20,7 @@
 #endif
 
 #include <bits/types.h>
+#include <bits/shmlba.h>
 
 /* Permission flag for shmget.  */
 #define SHM_R          0400            /* or S_IRUGO from <linux/stat.h> */
 
 __BEGIN_DECLS
 
-/* Segment low boundary address multiple.  */
-#define SHMLBA         (__getpagesize ())
-extern int __getpagesize (void) __THROW __attribute__ ((__const__));
-
 
 /* Type to count number of attaches.  */
 typedef __syscall_ulong_t shmatt_t;