Message ID | 20210607203613.282543-16-adhemerval.zanella@linaro.org |
---|---|
State | New |
Headers | show |
Series | Add 64 bit time support on legacy ABIs | expand |
On 6/7/21 4:36 PM, Adhemerval Zanella wrote: > Instead of replicate the same definitions from struct_shmid64_ds.h > on the multiple struct_shmid_ds.h, use a common header which is included > when required (struct_shmid64_ds_helper.h). > > The __USE_TIME_BITS64 is not defined internally yet, although the > internal header is used when building the 64-bit semctl implementation. No regressions on x86_64 and i686 and reviewed resulting ABI for correctness. Reviewed-by: Carlos O'Donell <carlos@redhat.com> Tested-by: carlos O'Donell <carlos@redhat.com> > --- > sysdeps/unix/sysv/linux/Makefile | 3 +- > .../sysv/linux/bits/types/struct_shmid64_ds.h | 9 +----- > .../bits/types/struct_shmid64_ds_helper.h | 28 +++++++++++++++++++ > .../sysv/linux/bits/types/struct_shmid_ds.h | 10 +++++-- > .../linux/hppa/bits/types/struct_shmid_ds.h | 10 +++++-- > .../linux/mips/bits/types/struct_shmid_ds.h | 14 ++++++---- > .../powerpc/bits/types/struct_shmid_ds.h | 10 +++++-- > .../linux/sparc/bits/types/struct_shmid_ds.h | 10 +++++-- > 8 files changed, 68 insertions(+), 26 deletions(-) > create mode 100644 sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds_helper.h > > diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile > index b6abcb1365..8b4d3a6a54 100644 > --- a/sysdeps/unix/sysv/linux/Makefile > +++ b/sysdeps/unix/sysv/linux/Makefile > @@ -103,7 +103,8 @@ sysdep_headers += sys/mount.h sys/acct.h \ > bits/struct_stat.h \ > bits/struct_stat_time64_helper.h \ > bits/types/struct_msqid64_ds_helper.h \ > - bits/types/struct_semid64_ds_helper.h > + bits/types/struct_semid64_ds_helper.h \ > + bits/types/struct_shmid64_ds_helper.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/bits/types/struct_shmid64_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds.h > index 71100db1b5..a4af8cc5f4 100644 > --- a/sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds.h > +++ b/sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds.h > @@ -25,13 +25,6 @@ > #else > struct __shmid64_ds > { > - struct ipc_perm shm_perm; /* operation permission struct */ > - size_t shm_segsz; /* size of segment in bytes */ > - __time64_t shm_atime; /* time of last shmat() */ > - __time64_t shm_dtime; /* time of last shmdt() */ > - __time64_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 */ > +# include <bits/types/struct_shmid64_ds_helper.h> OK. > }; > #endif > diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds_helper.h b/sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds_helper.h > new file mode 100644 > index 0000000000..945e7ce63e > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds_helper.h > @@ -0,0 +1,28 @@ > +/* Common definitions for struct semid_ds with 64-bit time. > + Copyright (C) 2020-2021 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 > + <https://www.gnu.org/licenses/>. */ > + > + struct ipc_perm shm_perm; /* operation permission struct */ > + size_t shm_segsz; /* size of segment in bytes */ > + __time64_t shm_atime; /* time of last shmat() */ > + __time64_t shm_dtime; /* time of last shmdt() */ > + __time64_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_reserved5; > + unsigned long int __glibc_reserved6; OK. Added reserved entries to match kernel entries. > diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h > index 2bd587d2b0..5f8ac6257b 100644 > --- a/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h > +++ b/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h > @@ -23,23 +23,27 @@ > /* Data structure describing a shared memory segment. */ > struct shmid_ds > { > +#ifdef __USE_TIME_BITS64 > +# include <bits/types/struct_shmid64_ds_helper.h> > +#else > struct ipc_perm shm_perm; /* operation permission struct */ > size_t shm_segsz; /* size of segment in bytes */ > -#if __TIMESIZE == 32 > +# if __TIMESIZE == 32 > __time_t shm_atime; /* time of last shmat() */ > unsigned long int __shm_atime_high; > __time_t shm_dtime; /* time of last shmdt() */ > unsigned long int __shm_dtime_high; > __time_t shm_ctime; /* time of last change by shmctl() */ > unsigned long int __shm_ctime_high; > -#else > +# else > __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() */ > -#endif > +# 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_reserved5; > __syscall_ulong_t __glibc_reserved6; > +#endif > }; > diff --git a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h > index 47ff80ebb0..7831fd7340 100644 > --- a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h > +++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h > @@ -23,8 +23,11 @@ > /* Data structure describing a shared memory segment. */ > struct shmid_ds > { > +#ifdef __USE_TIME_BITS64 > +# include <bits/types/struct_shmid64_ds_helper.h> > +#else > struct ipc_perm shm_perm; /* operation permission struct */ > -#if __TIMESIZE == 32 > +# if __TIMESIZE == 32 > unsigned long int __shm_atime_high; > __time_t shm_atime; /* time of last shmat() */ > unsigned long int __shm_dtime_high; > @@ -32,15 +35,16 @@ struct shmid_ds > unsigned long int __shm_ctime_high; > __time_t shm_ctime; /* time of last change by shmctl() */ > unsigned long int __glibc_reserved4; > -#else > +# else > __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() */ > -#endif > +# 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 */ > __syscall_ulong_t __glibc_reserved5; > __syscall_ulong_t __glibc_reserved6; > +#endif > }; > diff --git a/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h > index 7f8f3b9c51..0691a610ae 100644 > --- a/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h > +++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h > @@ -23,27 +23,31 @@ > /* Data structure describing a shared memory segment. */ > struct shmid_ds > { > +#ifdef __USE_TIME_BITS64 > +# include <bits/types/struct_shmid64_ds_helper.h> > +#else > struct ipc_perm shm_perm; /* operation permission struct */ > size_t shm_segsz; /* size of segment in bytes */ > -#if __TIMESIZE == 32 > +# if __TIMESIZE == 32 > __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() */ > -#else > +# else > __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() */ > -#endif > +# endif > __pid_t shm_cpid; /* pid of creator */ > __pid_t shm_lpid; /* pid of last shmop */ > shmatt_t shm_nattch; /* number of current attaches */ > -#if __TIMESIZE == 32 > +# if __TIMESIZE == 32 > unsigned short int __shm_atime_high; > unsigned short int __shm_dtime_high; > unsigned short int __shm_ctime_high; > unsigned short int __glibc_reserved4; > -#else > +# else > __syscall_ulong_t __glibc_reserved5; > __syscall_ulong_t __glibc_reserved6; > +# endif > #endif > }; > diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h > index d71bdf1ecf..316d43ec99 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h > +++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h > @@ -23,8 +23,11 @@ > /* Data structure describing a shared memory segment. */ > struct shmid_ds > { > +#ifdef __USE_TIME_BITS64 > +# include <bits/types/struct_shmid64_ds_helper.h> > +#else > struct ipc_perm shm_perm; /* operation permission struct */ > -#if __TIMESIZE == 32 > +# if __TIMESIZE == 32 > unsigned long int __shm_atime_high; > __time_t shm_atime; /* time of last shmat() */ > unsigned long int __shm_dtime_high; > @@ -32,15 +35,16 @@ struct shmid_ds > unsigned long int __shm_ctime_high; > __time_t shm_ctime; /* time of last change by shmctl() */ > unsigned long int __glibc_reserved4; > -#else > +# else > __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() */ > -#endif > +# 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 */ > __syscall_ulong_t __glibc_reserved5; > __syscall_ulong_t __glibc_reserved6; > +#endif > }; > diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h > index 767099803f..86f0cedac3 100644 > --- a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h > +++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h > @@ -23,23 +23,27 @@ > /* Data structure describing a shared memory segment. */ > struct shmid_ds > { > +#ifdef __USE_TIME_BITS64 > +# include <bits/types/struct_shmid64_ds_helper.h> > +#else > struct ipc_perm shm_perm; /* operation permission struct */ > -#if __TIMESIZE == 32 > +# if __TIMESIZE == 32 > unsigned long int __shm_atime_high; > __time_t shm_atime; /* time of last shmat() */ > unsigned long int __shm_dtime_high; > __time_t shm_dtime; /* time of last shmdt() */ > unsigned long int __shm_ctime_high; > __time_t shm_ctime; /* time of last change by shmctl() */ > -#else > +# else > __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() */ > -#endif > +# 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 */ > __syscall_ulong_t __glibc_reserved5; > __syscall_ulong_t __glibc_reserved6; > +#endif > }; >
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index b6abcb1365..8b4d3a6a54 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -103,7 +103,8 @@ sysdep_headers += sys/mount.h sys/acct.h \ bits/struct_stat.h \ bits/struct_stat_time64_helper.h \ bits/types/struct_msqid64_ds_helper.h \ - bits/types/struct_semid64_ds_helper.h + bits/types/struct_semid64_ds_helper.h \ + bits/types/struct_shmid64_ds_helper.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/bits/types/struct_shmid64_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds.h index 71100db1b5..a4af8cc5f4 100644 --- a/sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds.h +++ b/sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds.h @@ -25,13 +25,6 @@ #else struct __shmid64_ds { - struct ipc_perm shm_perm; /* operation permission struct */ - size_t shm_segsz; /* size of segment in bytes */ - __time64_t shm_atime; /* time of last shmat() */ - __time64_t shm_dtime; /* time of last shmdt() */ - __time64_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 */ +# include <bits/types/struct_shmid64_ds_helper.h> }; #endif diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds_helper.h b/sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds_helper.h new file mode 100644 index 0000000000..945e7ce63e --- /dev/null +++ b/sysdeps/unix/sysv/linux/bits/types/struct_shmid64_ds_helper.h @@ -0,0 +1,28 @@ +/* Common definitions for struct semid_ds with 64-bit time. + Copyright (C) 2020-2021 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 + <https://www.gnu.org/licenses/>. */ + + struct ipc_perm shm_perm; /* operation permission struct */ + size_t shm_segsz; /* size of segment in bytes */ + __time64_t shm_atime; /* time of last shmat() */ + __time64_t shm_dtime; /* time of last shmdt() */ + __time64_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_reserved5; + unsigned long int __glibc_reserved6; diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h index 2bd587d2b0..5f8ac6257b 100644 --- a/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h +++ b/sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h @@ -23,23 +23,27 @@ /* Data structure describing a shared memory segment. */ struct shmid_ds { +#ifdef __USE_TIME_BITS64 +# include <bits/types/struct_shmid64_ds_helper.h> +#else struct ipc_perm shm_perm; /* operation permission struct */ size_t shm_segsz; /* size of segment in bytes */ -#if __TIMESIZE == 32 +# if __TIMESIZE == 32 __time_t shm_atime; /* time of last shmat() */ unsigned long int __shm_atime_high; __time_t shm_dtime; /* time of last shmdt() */ unsigned long int __shm_dtime_high; __time_t shm_ctime; /* time of last change by shmctl() */ unsigned long int __shm_ctime_high; -#else +# else __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() */ -#endif +# 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_reserved5; __syscall_ulong_t __glibc_reserved6; +#endif }; diff --git a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h index 47ff80ebb0..7831fd7340 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h @@ -23,8 +23,11 @@ /* Data structure describing a shared memory segment. */ struct shmid_ds { +#ifdef __USE_TIME_BITS64 +# include <bits/types/struct_shmid64_ds_helper.h> +#else struct ipc_perm shm_perm; /* operation permission struct */ -#if __TIMESIZE == 32 +# if __TIMESIZE == 32 unsigned long int __shm_atime_high; __time_t shm_atime; /* time of last shmat() */ unsigned long int __shm_dtime_high; @@ -32,15 +35,16 @@ struct shmid_ds unsigned long int __shm_ctime_high; __time_t shm_ctime; /* time of last change by shmctl() */ unsigned long int __glibc_reserved4; -#else +# else __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() */ -#endif +# 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 */ __syscall_ulong_t __glibc_reserved5; __syscall_ulong_t __glibc_reserved6; +#endif }; diff --git a/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h index 7f8f3b9c51..0691a610ae 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h +++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h @@ -23,27 +23,31 @@ /* Data structure describing a shared memory segment. */ struct shmid_ds { +#ifdef __USE_TIME_BITS64 +# include <bits/types/struct_shmid64_ds_helper.h> +#else struct ipc_perm shm_perm; /* operation permission struct */ size_t shm_segsz; /* size of segment in bytes */ -#if __TIMESIZE == 32 +# if __TIMESIZE == 32 __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() */ -#else +# else __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() */ -#endif +# endif __pid_t shm_cpid; /* pid of creator */ __pid_t shm_lpid; /* pid of last shmop */ shmatt_t shm_nattch; /* number of current attaches */ -#if __TIMESIZE == 32 +# if __TIMESIZE == 32 unsigned short int __shm_atime_high; unsigned short int __shm_dtime_high; unsigned short int __shm_ctime_high; unsigned short int __glibc_reserved4; -#else +# else __syscall_ulong_t __glibc_reserved5; __syscall_ulong_t __glibc_reserved6; +# endif #endif }; diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h index d71bdf1ecf..316d43ec99 100644 --- a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h +++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h @@ -23,8 +23,11 @@ /* Data structure describing a shared memory segment. */ struct shmid_ds { +#ifdef __USE_TIME_BITS64 +# include <bits/types/struct_shmid64_ds_helper.h> +#else struct ipc_perm shm_perm; /* operation permission struct */ -#if __TIMESIZE == 32 +# if __TIMESIZE == 32 unsigned long int __shm_atime_high; __time_t shm_atime; /* time of last shmat() */ unsigned long int __shm_dtime_high; @@ -32,15 +35,16 @@ struct shmid_ds unsigned long int __shm_ctime_high; __time_t shm_ctime; /* time of last change by shmctl() */ unsigned long int __glibc_reserved4; -#else +# else __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() */ -#endif +# 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 */ __syscall_ulong_t __glibc_reserved5; __syscall_ulong_t __glibc_reserved6; +#endif }; diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h index 767099803f..86f0cedac3 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h @@ -23,23 +23,27 @@ /* Data structure describing a shared memory segment. */ struct shmid_ds { +#ifdef __USE_TIME_BITS64 +# include <bits/types/struct_shmid64_ds_helper.h> +#else struct ipc_perm shm_perm; /* operation permission struct */ -#if __TIMESIZE == 32 +# if __TIMESIZE == 32 unsigned long int __shm_atime_high; __time_t shm_atime; /* time of last shmat() */ unsigned long int __shm_dtime_high; __time_t shm_dtime; /* time of last shmdt() */ unsigned long int __shm_ctime_high; __time_t shm_ctime; /* time of last change by shmctl() */ -#else +# else __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() */ -#endif +# 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 */ __syscall_ulong_t __glibc_reserved5; __syscall_ulong_t __glibc_reserved6; +#endif };