mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-07 06:43:00 +03:00
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.
This commit is contained in:
25
ChangeLog
25
ChangeLog
@@ -1,5 +1,30 @@
|
|||||||
2018-10-17 Joseph Myers <joseph@codesourcery.com>
|
2018-10-17 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
|
* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
|
||||||
bits/shmlba.h.
|
bits/shmlba.h.
|
||||||
* sysdeps/unix/sysv/linux/bits/shm.h: Include <bits/shmlba.h>.
|
* sysdeps/unix/sysv/linux/bits/shm.h: Include <bits/shmlba.h>.
|
||||||
|
@@ -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/siginfo-arch.h bits/siginfo-consts-arch.h \
|
||||||
bits/procfs.h bits/procfs-id.h bits/procfs-extra.h \
|
bits/procfs.h bits/procfs-id.h bits/procfs-extra.h \
|
||||||
bits/procfs-prregset.h bits/mman-map-flags-generic.h \
|
bits/procfs-prregset.h bits/mman-map-flags-generic.h \
|
||||||
bits/msq-pad.h bits/sem-pad.h bits/shmlba.h
|
bits/msq-pad.h bits/sem-pad.h bits/shmlba.h bits/shm-pad.h
|
||||||
|
|
||||||
tests += tst-clone tst-clone2 tst-clone3 tst-fanotify tst-personality \
|
tests += tst-clone tst-clone2 tst-clone3 tst-fanotify tst-personality \
|
||||||
tst-quota tst-sync_file_range tst-sysconf-iov_max tst-ttyname \
|
tst-quota tst-sync_file_range tst-sysconf-iov_max tst-ttyname \
|
||||||
|
37
sysdeps/unix/sysv/linux/bits/shm-pad.h
Normal file
37
sysdeps/unix/sysv/linux/bits/shm-pad.h
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
/* Define where padding goes in struct shmid_ds. 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/shm-pad.h> directly; include <sys/shm.h> instead."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <bits/wordsize.h>
|
||||||
|
|
||||||
|
/* On most architectures, padding goes after time fields for 32-bit
|
||||||
|
systems and is omitted for 64-bit systems. Some architectures pad
|
||||||
|
before time fields instead, or omit padding despite being 32-bit,
|
||||||
|
or include it despite being 64-bit. Furthermore, some
|
||||||
|
architectures place shm_segsz after the time fields rather than
|
||||||
|
before them, with or without padding there. This must match the
|
||||||
|
layout used for struct shmid64_ds in <asm/shmbuf.h>, as glibc does
|
||||||
|
not do layout conversions for this structure. */
|
||||||
|
|
||||||
|
#define __SHM_PAD_AFTER_TIME (__WORDSIZE == 32)
|
||||||
|
#define __SHM_PAD_BEFORE_TIME 0
|
||||||
|
#define __SHM_SEGSZ_AFTER_TIME 0
|
||||||
|
#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
|
@@ -22,6 +22,7 @@
|
|||||||
#include <bits/types.h>
|
#include <bits/types.h>
|
||||||
#include <bits/wordsize.h>
|
#include <bits/wordsize.h>
|
||||||
#include <bits/shmlba.h>
|
#include <bits/shmlba.h>
|
||||||
|
#include <bits/shm-pad.h>
|
||||||
|
|
||||||
/* Permission flag for shmget. */
|
/* Permission flag for shmget. */
|
||||||
#define SHM_R 0400 /* or S_IRUGO from <linux/stat.h> */
|
#define SHM_R 0400 /* or S_IRUGO from <linux/stat.h> */
|
||||||
@@ -40,30 +41,40 @@
|
|||||||
__BEGIN_DECLS
|
__BEGIN_DECLS
|
||||||
|
|
||||||
/* Type to count number of attaches. */
|
/* Type to count number of attaches. */
|
||||||
typedef unsigned long int shmatt_t;
|
typedef __syscall_ulong_t shmatt_t;
|
||||||
|
|
||||||
|
#if __SHM_PAD_BEFORE_TIME
|
||||||
|
# define __SHM_PAD_TIME(NAME, RES) \
|
||||||
|
unsigned long int __glibc_reserved ## RES; __time_t NAME
|
||||||
|
#elif __SHM_PAD_AFTER_TIME
|
||||||
|
# define __SHM_PAD_TIME(NAME, RES) \
|
||||||
|
__time_t NAME; unsigned long int __glibc_reserved ## RES
|
||||||
|
#else
|
||||||
|
# define __SHM_PAD_TIME(NAME, RES) \
|
||||||
|
__time_t NAME
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Data structure describing a shared memory segment. */
|
/* Data structure describing a shared memory segment. */
|
||||||
struct shmid_ds
|
struct shmid_ds
|
||||||
{
|
{
|
||||||
struct ipc_perm shm_perm; /* operation permission struct */
|
struct ipc_perm shm_perm; /* operation permission struct */
|
||||||
|
#if !__SHM_SEGSZ_AFTER_TIME
|
||||||
size_t shm_segsz; /* size of segment in bytes */
|
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
|
#endif
|
||||||
__time_t shm_dtime; /* time of last shmdt() */
|
__SHM_PAD_TIME (shm_atime, 1); /* time of last shmat() */
|
||||||
#if __WORDSIZE == 32
|
__SHM_PAD_TIME (shm_dtime, 2); /* time of last shmdt() */
|
||||||
unsigned long int __glibc_reserved2;
|
__SHM_PAD_TIME (shm_ctime, 3); /* time of last change by shmctl() */
|
||||||
|
#if __SHM_PAD_BETWEEN_TIME_AND_SEGSZ
|
||||||
|
unsigned long int __glibc_reserved4;
|
||||||
#endif
|
#endif
|
||||||
__time_t shm_ctime; /* time of last change by shmctl() */
|
#if __SHM_SEGSZ_AFTER_TIME
|
||||||
#if __WORDSIZE == 32
|
size_t shm_segsz; /* size of segment in bytes */
|
||||||
unsigned long int __glibc_reserved3;
|
|
||||||
#endif
|
#endif
|
||||||
__pid_t shm_cpid; /* pid of creator */
|
__pid_t shm_cpid; /* pid of creator */
|
||||||
__pid_t shm_lpid; /* pid of last shmop */
|
__pid_t shm_lpid; /* pid of last shmop */
|
||||||
shmatt_t shm_nattch; /* number of current attaches */
|
shmatt_t shm_nattch; /* number of current attaches */
|
||||||
unsigned long int __glibc_reserved4;
|
__syscall_ulong_t __glibc_reserved5;
|
||||||
unsigned long int __glibc_reserved5;
|
__syscall_ulong_t __glibc_reserved6;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __USE_MISC
|
#ifdef __USE_MISC
|
||||||
@@ -81,25 +92,25 @@ struct shmid_ds
|
|||||||
|
|
||||||
struct shminfo
|
struct shminfo
|
||||||
{
|
{
|
||||||
unsigned long int shmmax;
|
__syscall_ulong_t shmmax;
|
||||||
unsigned long int shmmin;
|
__syscall_ulong_t shmmin;
|
||||||
unsigned long int shmmni;
|
__syscall_ulong_t shmmni;
|
||||||
unsigned long int shmseg;
|
__syscall_ulong_t shmseg;
|
||||||
unsigned long int shmall;
|
__syscall_ulong_t shmall;
|
||||||
unsigned long int __glibc_reserved1;
|
__syscall_ulong_t __glibc_reserved1;
|
||||||
unsigned long int __glibc_reserved2;
|
__syscall_ulong_t __glibc_reserved2;
|
||||||
unsigned long int __glibc_reserved3;
|
__syscall_ulong_t __glibc_reserved3;
|
||||||
unsigned long int __glibc_reserved4;
|
__syscall_ulong_t __glibc_reserved4;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct shm_info
|
struct shm_info
|
||||||
{
|
{
|
||||||
int used_ids;
|
int used_ids;
|
||||||
unsigned long int shm_tot; /* total allocated shm */
|
__syscall_ulong_t shm_tot; /* total allocated shm */
|
||||||
unsigned long int shm_rss; /* total resident shm */
|
__syscall_ulong_t shm_rss; /* total resident shm */
|
||||||
unsigned long int shm_swp; /* total swapped shm */
|
__syscall_ulong_t shm_swp; /* total swapped shm */
|
||||||
unsigned long int swap_attempts;
|
__syscall_ulong_t swap_attempts;
|
||||||
unsigned long int swap_successes;
|
__syscall_ulong_t swap_successes;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __USE_MISC */
|
#endif /* __USE_MISC */
|
||||||
|
28
sysdeps/unix/sysv/linux/hppa/bits/shm-pad.h
Normal file
28
sysdeps/unix/sysv/linux/hppa/bits/shm-pad.h
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/* Define where padding goes in struct shmid_ds. 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/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 (__WORDSIZE == 32)
|
@@ -1,106 +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>
|
|
||||||
#include <bits/wordsize.h>
|
|
||||||
#include <bits/shmlba.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) */
|
|
||||||
|
|
||||||
/* 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 */
|
|
||||||
#if __WORDSIZE == 32
|
|
||||||
unsigned int __pad1;
|
|
||||||
#endif
|
|
||||||
__time_t shm_atime; /* time of last shmat() */
|
|
||||||
#if __WORDSIZE == 32
|
|
||||||
unsigned int __pad2;
|
|
||||||
#endif
|
|
||||||
__time_t shm_dtime; /* time of last shmdt() */
|
|
||||||
#if __WORDSIZE == 32
|
|
||||||
unsigned int __pad3;
|
|
||||||
#endif
|
|
||||||
__time_t shm_ctime; /* time of last change by shmctl() */
|
|
||||||
#if __WORDSIZE == 32
|
|
||||||
unsigned int __pad4;
|
|
||||||
#endif
|
|
||||||
size_t shm_segsz; /* size of segment in bytes */
|
|
||||||
__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 shmmax;
|
|
||||||
unsigned long shmmin;
|
|
||||||
unsigned long shmmni;
|
|
||||||
unsigned long shmseg;
|
|
||||||
unsigned long shmall;
|
|
||||||
unsigned long __glibc_reserved1;
|
|
||||||
unsigned long __glibc_reserved2;
|
|
||||||
unsigned long __glibc_reserved3;
|
|
||||||
unsigned long __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 */
|
|
26
sysdeps/unix/sysv/linux/mips/bits/shm-pad.h
Normal file
26
sysdeps/unix/sysv/linux/mips/bits/shm-pad.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
/* Define where padding goes in struct shmid_ds. 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/shm-pad.h> directly; include <sys/shm.h> instead."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define __SHM_PAD_AFTER_TIME 0
|
||||||
|
#define __SHM_PAD_BEFORE_TIME 0
|
||||||
|
#define __SHM_SEGSZ_AFTER_TIME 0
|
||||||
|
#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
|
@@ -1,94 +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>
|
|
||||||
#include <bits/shmlba.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) */
|
|
||||||
|
|
||||||
|
|
||||||
/* 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 */
|
|
28
sysdeps/unix/sysv/linux/powerpc/bits/shm-pad.h
Normal file
28
sysdeps/unix/sysv/linux/powerpc/bits/shm-pad.h
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/* Define where padding goes in struct shmid_ds. PowerPC 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 (__WORDSIZE == 32)
|
@@ -1,110 +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>
|
|
||||||
#include <bits/shmlba.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
|
|
||||||
|
|
||||||
|
|
||||||
/* 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 */
|
|
||||||
#if __WORDSIZE == 32
|
|
||||||
unsigned int __glibc_reserved1;
|
|
||||||
#endif
|
|
||||||
__time_t shm_atime; /* time of last shmat() */
|
|
||||||
#if __WORDSIZE == 32
|
|
||||||
unsigned int __glibc_reserved2;
|
|
||||||
#endif
|
|
||||||
__time_t shm_dtime; /* time of last shmdt() */
|
|
||||||
#if __WORDSIZE == 32
|
|
||||||
unsigned int __glibc_reserved3;
|
|
||||||
#endif
|
|
||||||
__time_t shm_ctime; /* time of last change by shmctl() */
|
|
||||||
#if __WORDSIZE == 32
|
|
||||||
unsigned int __glibc_reserved4;
|
|
||||||
#endif
|
|
||||||
size_t shm_segsz; /* size of segment in bytes */
|
|
||||||
__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 __glibc_reserved5;
|
|
||||||
unsigned long __glibc_reserved6;
|
|
||||||
};
|
|
||||||
|
|
||||||
#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
|
|
28
sysdeps/unix/sysv/linux/sparc/bits/shm-pad.h
Normal file
28
sysdeps/unix/sysv/linux/sparc/bits/shm-pad.h
Normal file
@@ -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
|
@@ -1,108 +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>
|
|
||||||
#include <bits/wordsize.h>
|
|
||||||
#include <bits/shmlba.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
|
|
||||||
|
|
||||||
|
|
||||||
/* 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 */
|
|
||||||
#if __WORDSIZE == 32
|
|
||||||
unsigned int __pad1;
|
|
||||||
#endif
|
|
||||||
__time_t shm_atime; /* time of last shmat() */
|
|
||||||
#if __WORDSIZE == 32
|
|
||||||
unsigned int __pad2;
|
|
||||||
#endif
|
|
||||||
__time_t shm_dtime; /* time of last shmdt() */
|
|
||||||
#if __WORDSIZE == 32
|
|
||||||
unsigned int __pad3;
|
|
||||||
#endif
|
|
||||||
__time_t shm_ctime; /* time of last change by shmctl() */
|
|
||||||
size_t shm_segsz; /* size of segment in bytes */
|
|
||||||
__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 shmmax;
|
|
||||||
unsigned long shmmin;
|
|
||||||
unsigned long shmmni;
|
|
||||||
unsigned long shmseg;
|
|
||||||
unsigned long shmall;
|
|
||||||
unsigned long __glibc_reserved1;
|
|
||||||
unsigned long __glibc_reserved2;
|
|
||||||
unsigned long __glibc_reserved3;
|
|
||||||
unsigned long __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
|
|
30
sysdeps/unix/sysv/linux/x86/bits/shm-pad.h
Normal file
30
sysdeps/unix/sysv/linux/x86/bits/shm-pad.h
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
/* Define where padding goes in struct shmid_ds. x86 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
|
||||||
|
|
||||||
|
#ifdef __x86_64__
|
||||||
|
# define __SHM_PAD_AFTER_TIME 0
|
||||||
|
#else
|
||||||
|
# define __SHM_PAD_AFTER_TIME 1
|
||||||
|
#endif
|
||||||
|
#define __SHM_PAD_BEFORE_TIME 0
|
||||||
|
#define __SHM_SEGSZ_AFTER_TIME 0
|
||||||
|
#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
|
@@ -1,107 +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>
|
|
||||||
#include <bits/shmlba.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
|
|
||||||
|
|
||||||
|
|
||||||
/* Type to count number of attaches. */
|
|
||||||
typedef __syscall_ulong_t 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() */
|
|
||||||
#ifndef __x86_64__
|
|
||||||
unsigned long int __glibc_reserved1;
|
|
||||||
#endif
|
|
||||||
__time_t shm_dtime; /* time of last shmdt() */
|
|
||||||
#ifndef __x86_64__
|
|
||||||
unsigned long int __glibc_reserved2;
|
|
||||||
#endif
|
|
||||||
__time_t shm_ctime; /* time of last change by shmctl() */
|
|
||||||
#ifndef __x86_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 */
|
|
||||||
__syscall_ulong_t __glibc_reserved4;
|
|
||||||
__syscall_ulong_t __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
|
|
||||||
{
|
|
||||||
__syscall_ulong_t shmmax;
|
|
||||||
__syscall_ulong_t shmmin;
|
|
||||||
__syscall_ulong_t shmmni;
|
|
||||||
__syscall_ulong_t shmseg;
|
|
||||||
__syscall_ulong_t shmall;
|
|
||||||
__syscall_ulong_t __glibc_reserved1;
|
|
||||||
__syscall_ulong_t __glibc_reserved2;
|
|
||||||
__syscall_ulong_t __glibc_reserved3;
|
|
||||||
__syscall_ulong_t __glibc_reserved4;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct shm_info
|
|
||||||
{
|
|
||||||
int used_ids;
|
|
||||||
__syscall_ulong_t shm_tot; /* total allocated shm */
|
|
||||||
__syscall_ulong_t shm_rss; /* total resident shm */
|
|
||||||
__syscall_ulong_t shm_swp; /* total swapped shm */
|
|
||||||
__syscall_ulong_t swap_attempts;
|
|
||||||
__syscall_ulong_t swap_successes;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* __USE_MISC */
|
|
||||||
|
|
||||||
__END_DECLS
|
|
Reference in New Issue
Block a user