From 8c8d2a8aff71e0c53b372871f158c121289452cf Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Wed, 17 Oct 2018 11:55:10 +0000 Subject: Move SHMLBA to its own header. One difference between bits/shm.h headers for architectures using the Linux kernel is the definition of SHMLBA. This was noted in 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 . (SHMLBA): Remove macro. (__getpagesize): Remove function declaration. * sysdeps/unix/sysv/linux/hppa/bits/shm.h: Include . (SHMLBA): Remove macro. * sysdeps/unix/sysv/linux/mips/bits/shm.h: Include . (SHMLBA): Remove macro. * sysdeps/unix/sysv/linux/powerpc/bits/shm.h: Include . (SHMLBA): Remove macro. (__getpagesize): Remove function declaration. * sysdeps/unix/sysv/linux/sparc/bits/shm.h: Include . (SHMLBA): Remove macro. (__getshmlba): Remove function declaration. * sysdeps/unix/sysv/linux/x86/bits/shm.h: Include . (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. --- ChangeLog | 35 ++++++++++ sysdeps/unix/sysv/linux/Makefile | 2 +- sysdeps/unix/sysv/linux/arm/bits/shm.h | 104 ---------------------------- sysdeps/unix/sysv/linux/arm/bits/shmlba.h | 29 ++++++++ sysdeps/unix/sysv/linux/bits/shm.h | 6 +- sysdeps/unix/sysv/linux/bits/shmlba.h | 29 ++++++++ sysdeps/unix/sysv/linux/hppa/bits/shm.h | 4 +- sysdeps/unix/sysv/linux/hppa/bits/shmlba.h | 24 +++++++ sysdeps/unix/sysv/linux/ia64/bits/shm.h | 95 ------------------------- sysdeps/unix/sysv/linux/ia64/bits/shmlba.h | 24 +++++++ sysdeps/unix/sysv/linux/mips/bits/shm.h | 4 +- sysdeps/unix/sysv/linux/mips/bits/shmlba.h | 24 +++++++ sysdeps/unix/sysv/linux/powerpc/bits/shm.h | 5 +- sysdeps/unix/sysv/linux/sh/bits/shm.h | 102 --------------------------- sysdeps/unix/sysv/linux/sh/bits/shmlba.h | 24 +++++++ sysdeps/unix/sysv/linux/sparc/bits/shm.h | 5 +- sysdeps/unix/sysv/linux/sparc/bits/shmlba.h | 29 ++++++++ sysdeps/unix/sysv/linux/x86/bits/shm.h | 5 +- 18 files changed, 225 insertions(+), 325 deletions(-) delete mode 100644 sysdeps/unix/sysv/linux/arm/bits/shm.h create mode 100644 sysdeps/unix/sysv/linux/arm/bits/shmlba.h create mode 100644 sysdeps/unix/sysv/linux/bits/shmlba.h create mode 100644 sysdeps/unix/sysv/linux/hppa/bits/shmlba.h delete mode 100644 sysdeps/unix/sysv/linux/ia64/bits/shm.h create mode 100644 sysdeps/unix/sysv/linux/ia64/bits/shmlba.h create mode 100644 sysdeps/unix/sysv/linux/mips/bits/shmlba.h delete mode 100644 sysdeps/unix/sysv/linux/sh/bits/shm.h create mode 100644 sysdeps/unix/sysv/linux/sh/bits/shmlba.h create mode 100644 sysdeps/unix/sysv/linux/sparc/bits/shmlba.h diff --git a/ChangeLog b/ChangeLog index d13436c..0b2100f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,38 @@ +2018-10-17 Joseph Myers + + * sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add + bits/shmlba.h. + * sysdeps/unix/sysv/linux/bits/shm.h: Include . + (SHMLBA): Remove macro. + (__getpagesize): Remove function declaration. + * sysdeps/unix/sysv/linux/hppa/bits/shm.h: Include + . + (SHMLBA): Remove macro. + * sysdeps/unix/sysv/linux/mips/bits/shm.h: Include + . + (SHMLBA): Remove macro. + * sysdeps/unix/sysv/linux/powerpc/bits/shm.h: Include + . + (SHMLBA): Remove macro. + (__getpagesize): Remove function declaration. + * sysdeps/unix/sysv/linux/sparc/bits/shm.h: Include + . + (SHMLBA): Remove macro. + (__getshmlba): Remove function declaration. + * sysdeps/unix/sysv/linux/x86/bits/shm.h: Include . + (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 [BZ #23275] diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index edb1d29..27c7ef6 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -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 index e3d4916..0000000 --- a/sysdeps/unix/sysv/linux/arm/bits/shm.h +++ /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 - . */ - -#ifndef _SYS_SHM_H -# error "Never include directly; use instead." -#endif - -#include - -/* Permission flag for shmget. */ -#define SHM_R 0400 /* or S_IRUGO from */ -#define SHM_W 0200 /* or S_IWUGO from */ - -/* 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 index 0000000..521a325 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arm/bits/shmlba.h @@ -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 + . */ + +#ifndef _SYS_SHM_H +# error "Never use directly; include instead." +#endif + +__BEGIN_DECLS + +/* Segment low boundary address multiple. */ +#define SHMLBA (__getpagesize () << 2) +extern int __getpagesize (void) __THROW __attribute__ ((__const__)); + +__END_DECLS diff --git a/sysdeps/unix/sysv/linux/bits/shm.h b/sysdeps/unix/sysv/linux/bits/shm.h index 0f10d94..c305ee4 100644 --- a/sysdeps/unix/sysv/linux/bits/shm.h +++ b/sysdeps/unix/sysv/linux/bits/shm.h @@ -21,6 +21,7 @@ #include #include +#include /* Permission flag for shmget. */ #define SHM_R 0400 /* or S_IRUGO from */ @@ -38,11 +39,6 @@ __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 index 0000000..aa10b2b --- /dev/null +++ b/sysdeps/unix/sysv/linux/bits/shmlba.h @@ -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 + . */ + +#ifndef _SYS_SHM_H +# error "Never use directly; include instead." +#endif + +__BEGIN_DECLS + +/* Segment low boundary address multiple. */ +#define SHMLBA (__getpagesize ()) +extern int __getpagesize (void) __THROW __attribute__ ((__const__)); + +__END_DECLS diff --git a/sysdeps/unix/sysv/linux/hppa/bits/shm.h b/sysdeps/unix/sysv/linux/hppa/bits/shm.h index 4967c94..fed18e4 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/shm.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/shm.h @@ -21,6 +21,7 @@ #include #include +#include /* Permission flag for shmget. */ #define SHM_R 0400 /* or S_IRUGO from */ @@ -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 index 0000000..4282977 --- /dev/null +++ b/sysdeps/unix/sysv/linux/hppa/bits/shmlba.h @@ -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 + . */ + +#ifndef _SYS_SHM_H +# error "Never use directly; include 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 index 814f61b..0000000 --- a/sysdeps/unix/sysv/linux/ia64/bits/shm.h +++ /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 - . */ - -#ifndef _SYS_SHM_H -# error "Never include directly; use instead." -#endif - -#include - -/* Permission flag for shmget. */ -#define SHM_R 0400 /* or S_IRUGO from */ -#define SHM_W 0200 /* or S_IWUGO from */ - -/* 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 index 0000000..01c9f2e --- /dev/null +++ b/sysdeps/unix/sysv/linux/ia64/bits/shmlba.h @@ -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 + . */ + +#ifndef _SYS_SHM_H +# error "Never use directly; include instead." +#endif + +/* Segment low boundary address multiple. */ +#define SHMLBA (1024 * 1024) diff --git a/sysdeps/unix/sysv/linux/mips/bits/shm.h b/sysdeps/unix/sysv/linux/mips/bits/shm.h index 22068d7..4320bd4 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/shm.h +++ b/sysdeps/unix/sysv/linux/mips/bits/shm.h @@ -20,6 +20,7 @@ #endif #include +#include /* Permission flag for shmget. */ #define SHM_R 0400 /* or S_IRUGO from */ @@ -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 index 0000000..132943b --- /dev/null +++ b/sysdeps/unix/sysv/linux/mips/bits/shmlba.h @@ -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 + . */ + +#ifndef _SYS_SHM_H +# error "Never use directly; include instead." +#endif + +/* Segment low boundary address multiple. */ +#define SHMLBA 0x40000 diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/shm.h b/sysdeps/unix/sysv/linux/powerpc/bits/shm.h index 879023f..a41a1ab 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/shm.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/shm.h @@ -20,6 +20,7 @@ #endif #include +#include /* Permission flag for shmget. */ #define SHM_R 0400 /* or S_IRUGO from */ @@ -37,10 +38,6 @@ __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 index 25ca3a2..0000000 --- a/sysdeps/unix/sysv/linux/sh/bits/shm.h +++ /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 - . */ - -#ifndef _SYS_SHM_H -# error "Never include directly; use instead." -#endif - -#include - -/* Permission flag for shmget. */ -#define SHM_R 0400 /* or S_IRUGO from */ -#define SHM_W 0200 /* or S_IWUGO from */ - -/* 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 index 0000000..5c337b3 --- /dev/null +++ b/sysdeps/unix/sysv/linux/sh/bits/shmlba.h @@ -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 + . */ + +#ifndef _SYS_SHM_H +# error "Never use directly; include instead." +#endif + +/* Segment low boundary address multiple. */ +#define SHMLBA 0x4000 diff --git a/sysdeps/unix/sysv/linux/sparc/bits/shm.h b/sysdeps/unix/sysv/linux/sparc/bits/shm.h index d967f16..5262a79 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/shm.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/shm.h @@ -21,6 +21,7 @@ #include #include +#include /* Permission flag for shmget. */ #define SHM_R 0400 /* or S_IRUGO from */ @@ -38,10 +39,6 @@ __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 index 0000000..fe2a76b --- /dev/null +++ b/sysdeps/unix/sysv/linux/sparc/bits/shmlba.h @@ -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 + . */ + +#ifndef _SYS_SHM_H +# error "Never use directly; include instead." +#endif + +__BEGIN_DECLS + +/* Segment low boundary address multiple. */ +#define SHMLBA (__getshmlba ()) +extern int __getshmlba (void) __attribute__ ((__const__)); + +__END_DECLS diff --git a/sysdeps/unix/sysv/linux/x86/bits/shm.h b/sysdeps/unix/sysv/linux/x86/bits/shm.h index 767bb78..4b88ff0 100644 --- a/sysdeps/unix/sysv/linux/x86/bits/shm.h +++ b/sysdeps/unix/sysv/linux/x86/bits/shm.h @@ -20,6 +20,7 @@ #endif #include +#include /* Permission flag for shmget. */ #define SHM_R 0400 /* or S_IRUGO from */ @@ -37,10 +38,6 @@ __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; -- cgit v1.1