]> sourceware.org Git - glibc.git/commitdiff
Use common bits/shm.h for more architectures.
authorJoseph Myers <joseph@codesourcery.com>
Wed, 10 Oct 2018 00:56:17 +0000 (00:56 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Wed, 10 Oct 2018 00:56:17 +0000 (00:56 +0000)
sysdeps/unix/sysv/linux/bits/shm.h has padding after time fields in
struct shmid_ds unconditionally, and thus is only suitable for 32-bit
architectures (no 64-bit configurations use this file);
sysdeps/unix/sysv/linux/generic/bits/shm.h is substantively the same,
except that the padding is conditioned on __WORDSIZE == 32, and so it
can be used for 64-bit architectures as well.

This patch adds the conditionals to
sysdeps/unix/sysv/linux/bits/shm.h.  The linux/generic/ version is
then no longer needed and so is removed, as are the alpha and s390
versions which are also no longer needed.  The other
architecture-specific versions have different padding, layout, types
or SHMLBA definitions and so are still needed after this change.

This is essentially the same change for bits/shm.h as the bits/msq.h
patch and the bits/sem.h patch.  However, the details of the padding
variations for the architectures that aren't changed are not all the
same between msqid_ds, shmid_ds and semid_ds.

Tested with build-many-glibcs.py.

* sysdeps/unix/sysv/linux/bits/shm.h: Include <bits/wordsize.h>.
(struct shmid_ds): Condition padding after time fields on
[__WORDSIZE == 32].
* sysdeps/unix/sysv/linux/alpha/bits/shm.h: Remove file.
* sysdeps/unix/sysv/linux/generic/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/s390/bits/shm.h: Likewise.

ChangeLog
sysdeps/unix/sysv/linux/alpha/bits/shm.h [deleted file]
sysdeps/unix/sysv/linux/bits/shm.h
sysdeps/unix/sysv/linux/generic/bits/shm.h [deleted file]
sysdeps/unix/sysv/linux/s390/bits/shm.h [deleted file]

index 4d4dbe2751a5adea4962828e3313b799da5b063b..10b38cc6f91b6bdd60e9065519cdf518b89adcbd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2018-10-10  Joseph Myers  <joseph@codesourcery.com>
 
+       * sysdeps/unix/sysv/linux/bits/shm.h: Include <bits/wordsize.h>.
+       (struct shmid_ds): Condition padding after time fields on
+       [__WORDSIZE == 32].
+       * sysdeps/unix/sysv/linux/alpha/bits/shm.h: Remove file.
+       * sysdeps/unix/sysv/linux/generic/bits/shm.h: Likewise.
+       * sysdeps/unix/sysv/linux/s390/bits/shm.h: Likewise.
+
        * sysdeps/unix/sysv/linux/bits/sem.h: Include <bits/wordsize.h>.
        (struct semid_ds): Condition padding after time fields on
        [__WORDSIZE == 32].
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/shm.h b/sysdeps/unix/sysv/linux/alpha/bits/shm.h
deleted file mode 100644 (file)
index 16cd984..0000000
+++ /dev/null
@@ -1,101 +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 ())
-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() */
-    __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 */
-
-__END_DECLS
index 896c1d96bf2e166dd693b7b7bf46f11916c0a273..0f10d94f1f834fcf71779ce3a4f9b934af6a4148 100644 (file)
@@ -20,6 +20,7 @@
 #endif
 
 #include <bits/types.h>
+#include <bits/wordsize.h>
 
 /* Permission flag for shmget.  */
 #define SHM_R          0400            /* or S_IRUGO from <linux/stat.h> */
@@ -51,11 +52,17 @@ 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() */
+#if __WORDSIZE == 32
     unsigned long int __glibc_reserved1;
+#endif
     __time_t shm_dtime;                        /* time of last shmdt() */
+#if __WORDSIZE == 32
     unsigned long int __glibc_reserved2;
+#endif
     __time_t shm_ctime;                        /* time of last change by shmctl() */
+#if __WORDSIZE == 32
     unsigned long int __glibc_reserved3;
+#endif
     __pid_t shm_cpid;                  /* pid of creator */
     __pid_t shm_lpid;                  /* pid of last shmop */
     shmatt_t shm_nattch;               /* number of current attaches */
diff --git a/sysdeps/unix/sysv/linux/generic/bits/shm.h b/sysdeps/unix/sysv/linux/generic/bits/shm.h
deleted file mode 100644 (file)
index 30d0097..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/* Copyright (C) 2011-2018 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
-
-   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>
-#include <bits/wordsize.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 ())
-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() */
-#if __WORDSIZE == 32
-    unsigned long int __glibc_reserved1;
-#endif
-    __time_t shm_dtime;                        /* time of last shmdt() */
-#if __WORDSIZE == 32
-    unsigned long int __glibc_reserved2;
-#endif
-    __time_t shm_ctime;                        /* time of last change by shmctl() */
-#if __WORDSIZE == 32
-    unsigned long int __glibc_reserved3;
-#endif
-    __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/s390/bits/shm.h b/sysdeps/unix/sysv/linux/s390/bits/shm.h
deleted file mode 100644 (file)
index 65235ab..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/* Copyright (C) 2001-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>
-#include <bits/wordsize.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 ())
-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() */
-#if __WORDSIZE != 64
-  unsigned long int __glibc_reserved1;
-#endif
-    __time_t shm_dtime;                        /* time of last shmdt() */
-#if __WORDSIZE != 64
-  unsigned long int __glibc_reserved2;
-#endif
-    __time_t shm_ctime;                        /* time of last change by shmctl() */
-#if __WORDSIZE != 64
-  unsigned long int __glibc_reserved3;
-#endif
-    __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
This page took 0.08216 seconds and 5 git commands to generate.