Message ID | 20200401165308.1913271-3-alistair.francis@wdc.com |
---|---|
State | New |
Headers | show |
Series | Support y2038 semctl_syscall() | expand |
On 01/04/2020 13:53, Alistair Francis via Libc-alpha wrote: > Remove the sem-pad.h file and instead have architectures override the > struct semid_ds via the bits/types/struct_semid_ds.h file. Ok with the remarks below. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> > --- > sysdeps/unix/sysv/linux/Makefile | 2 +- > sysdeps/unix/sysv/linux/bits/sem-pad.h | 33 ------------- > sysdeps/unix/sysv/linux/bits/sem.h | 2 +- > .../sysv/linux/bits/types/struct_semid_ds.h | 29 ++++++------ > .../linux/hppa/bits/types/struct_semid_ds.h | 46 +++++++++++++++++++ > sysdeps/unix/sysv/linux/mips/bits/sem-pad.h | 24 ---------- > .../bits/types/struct_semid_ds.h} | 20 +++++--- > .../unix/sysv/linux/powerpc/bits/sem-pad.h | 26 ----------- > .../powerpc/bits/types/struct_semid_ds.h | 46 +++++++++++++++++++ > .../linux/sparc/bits/types/struct_semid_ds.h | 46 +++++++++++++++++++ > sysdeps/unix/sysv/linux/x86/bits/sem-pad.h | 24 ---------- > .../bits/types/struct_semid_ds.h} | 22 ++++++--- > 12 files changed, 184 insertions(+), 136 deletions(-) > delete mode 100644 sysdeps/unix/sysv/linux/bits/sem-pad.h > create mode 100644 sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h > delete mode 100644 sysdeps/unix/sysv/linux/mips/bits/sem-pad.h > rename sysdeps/unix/sysv/linux/{sparc/bits/sem-pad.h => mips/bits/types/struct_semid_ds.h} (56%) > delete mode 100644 sysdeps/unix/sysv/linux/powerpc/bits/sem-pad.h > create mode 100644 sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h > create mode 100644 sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h > delete mode 100644 sysdeps/unix/sysv/linux/x86/bits/sem-pad.h > rename sysdeps/unix/sysv/linux/{hppa/bits/sem-pad.h => x86/bits/types/struct_semid_ds.h} (52%) > > diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile > index bbf1d60fc6..84ed4344d3 100644 > --- a/sysdeps/unix/sysv/linux/Makefile > +++ b/sysdeps/unix/sysv/linux/Makefile > @@ -86,7 +86,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/shmlba.h bits/shm-pad.h \ > + bits/msq-pad.h bits/shmlba.h bits/shm-pad.h \ > bits/termios-struct.h bits/termios-c_cc.h \ > bits/termios-c_iflag.h bits/termios-c_oflag.h \ > bits/termios-baud.h bits/termios-c_cflag.h \ Ok. > diff --git a/sysdeps/unix/sysv/linux/bits/sem-pad.h b/sysdeps/unix/sysv/linux/bits/sem-pad.h > deleted file mode 100644 > index 566ce039cc..0000000000 > --- a/sysdeps/unix/sysv/linux/bits/sem-pad.h > +++ /dev/null > @@ -1,33 +0,0 @@ > -/* Define where padding goes in struct semid_ds. Generic version. > - Copyright (C) 2018-2020 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/>. */ > - > -#ifndef _SYS_SEM_H > -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." > -#endif > - > -#include <bits/timesize.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. This must match the layout > - used for struct semid64_ds in <asm/sembuf.h>, as glibc does not do > - layout conversions for this structure. */ > - > -#define __SEM_PAD_AFTER_TIME (__TIMESIZE == 32) > -#define __SEM_PAD_BEFORE_TIME 0 Ok. > diff --git a/sysdeps/unix/sysv/linux/bits/sem.h b/sysdeps/unix/sysv/linux/bits/sem.h > index 0d1813ec67..ba1169fdb3 100644 > --- a/sysdeps/unix/sysv/linux/bits/sem.h > +++ b/sysdeps/unix/sysv/linux/bits/sem.h > @@ -20,7 +20,7 @@ > #endif > > #include <sys/types.h> > -#include <bits/sem-pad.h> > +#include <bits/timesize.h> > #include <bits/types/struct_semid_ds.h> > > /* Flags for `semop'. */ Ok. > diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h > index ba0719e77a..659db85db8 100644 > --- a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h > +++ b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h > @@ -20,24 +20,27 @@ > # error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." > #endif > > -#if __SEM_PAD_BEFORE_TIME > -# define __SEM_PAD_TIME(NAME, RES) \ > - __syscall_ulong_t __glibc_reserved ## RES; __time_t NAME > -#elif __SEM_PAD_AFTER_TIME > -# define __SEM_PAD_TIME(NAME, RES) \ > - __time_t NAME; __syscall_ulong_t __glibc_reserved ## RES > -#else > -# define __SEM_PAD_TIME(NAME, RES) \ > - __time_t NAME > -#endif > - > /* Data structure describing a set of semaphores. */ > +#if __TIMESIZE == 32 > +struct semid_ds > +{ > + struct ipc_perm sem_perm; /* operation permission struct */ > + __time_t sem_otime; /* last semop() time */ > + __syscall_ulong_t __glibc_reserved1; > + __time_t sem_ctime; /* last time changed by semctl() */ > + __syscall_ulong_t __glibc_reserved2; > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > + __syscall_ulong_t __glibc_reserved3; > + __syscall_ulong_t __glibc_reserved4; > +}; > +#else > struct semid_ds > { > struct ipc_perm sem_perm; /* operation permission struct */ > - __SEM_PAD_TIME (sem_otime, 1); /* last semop() time */ > - __SEM_PAD_TIME (sem_ctime, 2); /* last time changed by semctl() */ > + __time_t sem_otime; /* last semop() time */ > + __time_t sem_ctime; /* last time changed by semctl() */ Shouldn't be __time64_t? > __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > __syscall_ulong_t __glibc_reserved3; > __syscall_ulong_t __glibc_reserved4; > }; > +#endif> diff --git a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h > new file mode 100644 > index 0000000000..fbc26ef2ca > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h > @@ -0,0 +1,46 @@ > +/* HPPA implementation of the semaphore struct semid_ds > + Copyright (C) 1995-2020 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/>. */ > + > +#ifndef _SYS_SEM_H > +# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." > +#endif > + > +/* Data structure describing a set of semaphores. */ > +#if __TIMESIZE == 32 > +struct semid_ds > +{ > + struct ipc_perm sem_perm; /* operation permission struct */ > + __syscall_ulong_t __glibc_reserved1; > + __time_t sem_otime; /* last semop() time */ > + __syscall_ulong_t __glibc_reserved2; > + __time_t sem_ctime; /* last time changed by semctl() */ > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > + __syscall_ulong_t __glibc_reserved3; > + __syscall_ulong_t __glibc_reserved4; > +}; Ok. > +#else > +struct semid_ds > +{ > + struct ipc_perm sem_perm; /* operation permission struct */ > + __time_t sem_otime; /* last semop() time */ > + __time_t sem_ctime; /* last time changed by semctl() */ > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > + __syscall_ulong_t __glibc_reserved3; > + __syscall_ulong_t __glibc_reserved4; > +}; > +#endif There is no support for 64-bit userland neither it is a valid glibc support ABI, so we can remove it. > diff --git a/sysdeps/unix/sysv/linux/mips/bits/sem-pad.h b/sysdeps/unix/sysv/linux/mips/bits/sem-pad.h > deleted file mode 100644 > index 4c581f7694..0000000000 > --- a/sysdeps/unix/sysv/linux/mips/bits/sem-pad.h > +++ /dev/null > @@ -1,24 +0,0 @@ > -/* Define where padding goes in struct semid_ds. MIPS version. > - Copyright (C) 2018-2020 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/>. */ > - > -#ifndef _SYS_SEM_H > -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." > -#endif > - > -#define __SEM_PAD_AFTER_TIME 0 > -#define __SEM_PAD_BEFORE_TIME 0 Ok. > diff --git a/sysdeps/unix/sysv/linux/sparc/bits/sem-pad.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h > similarity index 56% > rename from sysdeps/unix/sysv/linux/sparc/bits/sem-pad.h > rename to sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h > index 5f4e214d12..8954209a29 100644 > --- a/sysdeps/unix/sysv/linux/sparc/bits/sem-pad.h > +++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h > @@ -1,5 +1,5 @@ > -/* Define where padding goes in struct semid_ds. SPARC version. > - Copyright (C) 2018-2020 Free Software Foundation, Inc. > +/* MIPS implementation of the semaphore struct semid_ds > + Copyright (C) 1995-2020 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 > @@ -17,10 +17,16 @@ > <https://www.gnu.org/licenses/>. */ > > #ifndef _SYS_SEM_H > -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." > +# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." > #endif > > -#include <bits/timesize.h> > - > -#define __SEM_PAD_AFTER_TIME 0 > -#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32) > +/* Data structure describing a set of semaphores. */ > +struct semid_ds > +{ > + struct ipc_perm sem_perm; /* operation permission struct */ > + __time_t sem_otime; /* last semop() time */ > + __time_t sem_ctime; /* last time changed by semctl() */ > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > + __syscall_ulong_t __glibc_reserved3; > + __syscall_ulong_t __glibc_reserved4; > +}; Ok. > diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/sem-pad.h b/sysdeps/unix/sysv/linux/powerpc/bits/sem-pad.h > deleted file mode 100644 > index 42d8827906..0000000000 > --- a/sysdeps/unix/sysv/linux/powerpc/bits/sem-pad.h > +++ /dev/null > @@ -1,26 +0,0 @@ > -/* Define where padding goes in struct semid_ds. PowerPC version. > - Copyright (C) 2018-2020 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/>. */ > - > -#ifndef _SYS_SEM_H > -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." > -#endif > - > -#include <bits/timesize.h> > - > -#define __SEM_PAD_AFTER_TIME 0 > -#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32) Ok. > diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h > new file mode 100644 > index 0000000000..d393141808 > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h > @@ -0,0 +1,46 @@ > +/* PowerPC implementation of the semaphore struct semid_ds Missing period. > + Copyright (C) 1995-2020 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/>. */ > + > +#ifndef _SYS_SEM_H > +# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." > +#endif > + > +/* Data structure describing a set of semaphores. */ > +#if __TIMESIZE == 32 > +struct semid_ds > +{ > + struct ipc_perm sem_perm; /* operation permission struct */ > + __syscall_ulong_t __glibc_reserved1; > + __time_t sem_otime; /* last semop() time */ > + __syscall_ulong_t __glibc_reserved2; > + __time_t sem_ctime; /* last time changed by semctl() */ > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > + __syscall_ulong_t __glibc_reserved3; > + __syscall_ulong_t __glibc_reserved4; > +}; > +#else > +struct semid_ds > +{ > + struct ipc_perm sem_perm; /* operation permission struct */ > + __time_t sem_otime; /* last semop() time */ > + __time_t sem_ctime; /* last time changed by semctl() */ > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > + __syscall_ulong_t __glibc_reserved3; > + __syscall_ulong_t __glibc_reserved4; > +}; > +#endif Ok, although it can be simplified to: struct semid_ds { struct ipc_perm sem_perm; #if __TIMESIZE == 32 __syscall_ulong_t __glibc_reserved1; __time_t sem_otime; __syscall_ulong_t __glibc_reserved2; __time_t sem_ctime; #else __time_t sem_otime; __time_t sem_ctime; #endif __syscall_ulong_t sem_nsems; __syscall_ulong_t __glibc_reserved3; __syscall_ulong_t __glibc_reserved4; }; > diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h > new file mode 100644 > index 0000000000..84c7a9022a > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h > @@ -0,0 +1,46 @@ > +/* Sparc implementation of the semaphore struct semid_ds > + Copyright (C) 1995-2020 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/>. */ > + > +#ifndef _SYS_SEM_H > +# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." > +#endif > + > +/* Data structure describing a set of semaphores. */ > +#if __TIMESIZE == 32 > +struct semid_ds > +{ > + struct ipc_perm sem_perm; /* operation permission struct */ > + __syscall_ulong_t __glibc_reserved1; > + __time_t sem_otime; /* last semop() time */ > + __syscall_ulong_t __glibc_reserved2; > + __time_t sem_ctime; /* last time changed by semctl() */ > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > + __syscall_ulong_t __glibc_reserved3; > + __syscall_ulong_t __glibc_reserved4; > +}; > +#else > +struct semid_ds > +{ > + struct ipc_perm sem_perm; /* operation permission struct */ > + __time_t sem_otime; /* last semop() time */ > + __time_t sem_ctime; /* last time changed by semctl() */ > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > + __syscall_ulong_t __glibc_reserved3; > + __syscall_ulong_t __glibc_reserved4; > +}; > +#endif Ok, although it also can be simplified as the powerpc one. > diff --git a/sysdeps/unix/sysv/linux/x86/bits/sem-pad.h b/sysdeps/unix/sysv/linux/x86/bits/sem-pad.h > deleted file mode 100644 > index 102e226997..0000000000 > --- a/sysdeps/unix/sysv/linux/x86/bits/sem-pad.h > +++ /dev/null > @@ -1,24 +0,0 @@ > -/* Define where padding goes in struct semid_ds. x86 version. > - Copyright (C) 2018-2020 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/>. */ > - > -#ifndef _SYS_SEM_H > -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." > -#endif > - > -#define __SEM_PAD_AFTER_TIME 1 > -#define __SEM_PAD_BEFORE_TIME 0 Ok. > diff --git a/sysdeps/unix/sysv/linux/hppa/bits/sem-pad.h b/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h > similarity index 52% > rename from sysdeps/unix/sysv/linux/hppa/bits/sem-pad.h > rename to sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h > index ee0332325b..22f0645f85 100644 > --- a/sysdeps/unix/sysv/linux/hppa/bits/sem-pad.h > +++ b/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h > @@ -1,5 +1,5 @@ > -/* Define where padding goes in struct semid_ds. HPPA version. > - Copyright (C) 2018-2020 Free Software Foundation, Inc. > +/* Sparc implementation of the semaphore struct semid_ds > + Copyright (C) 1995-2020 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 > @@ -17,10 +17,18 @@ > <https://www.gnu.org/licenses/>. */ > > #ifndef _SYS_SEM_H > -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." > +# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." > #endif > > -#include <bits/timesize.h> > - > -#define __SEM_PAD_AFTER_TIME 0 > -#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32) > +/* Data structure describing a set of semaphores. */ > +struct semid_ds > +{ > + struct ipc_perm sem_perm; /* operation permission struct */ > + __time_t sem_otime; /* last semop() time */ > + __syscall_ulong_t __glibc_reserved1; > + __time_t sem_ctime; /* last time changed by semctl() */ > + __syscall_ulong_t __glibc_reserved2; > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > + __syscall_ulong_t __glibc_reserved3; > + __syscall_ulong_t __glibc_reserved4; > +}; > Ok.
On Fri, Apr 17, 2020 at 12:03 PM Adhemerval Zanella via Libc-alpha <libc-alpha@sourceware.org> wrote: > > > > On 01/04/2020 13:53, Alistair Francis via Libc-alpha wrote: > > Remove the sem-pad.h file and instead have architectures override the > > struct semid_ds via the bits/types/struct_semid_ds.h file. > > Ok with the remarks below. > > Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> > > > --- > > sysdeps/unix/sysv/linux/Makefile | 2 +- > > sysdeps/unix/sysv/linux/bits/sem-pad.h | 33 ------------- > > sysdeps/unix/sysv/linux/bits/sem.h | 2 +- > > .../sysv/linux/bits/types/struct_semid_ds.h | 29 ++++++------ > > .../linux/hppa/bits/types/struct_semid_ds.h | 46 +++++++++++++++++++ > > sysdeps/unix/sysv/linux/mips/bits/sem-pad.h | 24 ---------- > > .../bits/types/struct_semid_ds.h} | 20 +++++--- > > .../unix/sysv/linux/powerpc/bits/sem-pad.h | 26 ----------- > > .../powerpc/bits/types/struct_semid_ds.h | 46 +++++++++++++++++++ > > .../linux/sparc/bits/types/struct_semid_ds.h | 46 +++++++++++++++++++ > > sysdeps/unix/sysv/linux/x86/bits/sem-pad.h | 24 ---------- > > .../bits/types/struct_semid_ds.h} | 22 ++++++--- > > 12 files changed, 184 insertions(+), 136 deletions(-) > > delete mode 100644 sysdeps/unix/sysv/linux/bits/sem-pad.h > > create mode 100644 sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h > > delete mode 100644 sysdeps/unix/sysv/linux/mips/bits/sem-pad.h > > rename sysdeps/unix/sysv/linux/{sparc/bits/sem-pad.h => mips/bits/types/struct_semid_ds.h} (56%) > > delete mode 100644 sysdeps/unix/sysv/linux/powerpc/bits/sem-pad.h > > create mode 100644 sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h > > create mode 100644 sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h > > delete mode 100644 sysdeps/unix/sysv/linux/x86/bits/sem-pad.h > > rename sysdeps/unix/sysv/linux/{hppa/bits/sem-pad.h => x86/bits/types/struct_semid_ds.h} (52%) > > > > diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile > > index bbf1d60fc6..84ed4344d3 100644 > > --- a/sysdeps/unix/sysv/linux/Makefile > > +++ b/sysdeps/unix/sysv/linux/Makefile > > @@ -86,7 +86,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/shmlba.h bits/shm-pad.h \ > > + bits/msq-pad.h bits/shmlba.h bits/shm-pad.h \ > > bits/termios-struct.h bits/termios-c_cc.h \ > > bits/termios-c_iflag.h bits/termios-c_oflag.h \ > > bits/termios-baud.h bits/termios-c_cflag.h \ > > Ok. > > > diff --git a/sysdeps/unix/sysv/linux/bits/sem-pad.h b/sysdeps/unix/sysv/linux/bits/sem-pad.h > > deleted file mode 100644 > > index 566ce039cc..0000000000 > > --- a/sysdeps/unix/sysv/linux/bits/sem-pad.h > > +++ /dev/null > > @@ -1,33 +0,0 @@ > > -/* Define where padding goes in struct semid_ds. Generic version. > > - Copyright (C) 2018-2020 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/>. */ > > - > > -#ifndef _SYS_SEM_H > > -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." > > -#endif > > - > > -#include <bits/timesize.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. This must match the layout > > - used for struct semid64_ds in <asm/sembuf.h>, as glibc does not do > > - layout conversions for this structure. */ > > - > > -#define __SEM_PAD_AFTER_TIME (__TIMESIZE == 32) > > -#define __SEM_PAD_BEFORE_TIME 0 > > Ok. > > > diff --git a/sysdeps/unix/sysv/linux/bits/sem.h b/sysdeps/unix/sysv/linux/bits/sem.h > > index 0d1813ec67..ba1169fdb3 100644 > > --- a/sysdeps/unix/sysv/linux/bits/sem.h > > +++ b/sysdeps/unix/sysv/linux/bits/sem.h > > @@ -20,7 +20,7 @@ > > #endif > > > > #include <sys/types.h> > > -#include <bits/sem-pad.h> > > +#include <bits/timesize.h> > > #include <bits/types/struct_semid_ds.h> > > > > /* Flags for `semop'. */ > > Ok. > > > diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h > > index ba0719e77a..659db85db8 100644 > > --- a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h > > +++ b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h > > @@ -20,24 +20,27 @@ > > # error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." > > #endif > > > > -#if __SEM_PAD_BEFORE_TIME > > -# define __SEM_PAD_TIME(NAME, RES) \ > > - __syscall_ulong_t __glibc_reserved ## RES; __time_t NAME > > -#elif __SEM_PAD_AFTER_TIME > > -# define __SEM_PAD_TIME(NAME, RES) \ > > - __time_t NAME; __syscall_ulong_t __glibc_reserved ## RES > > -#else > > -# define __SEM_PAD_TIME(NAME, RES) \ > > - __time_t NAME > > -#endif > > - > > /* Data structure describing a set of semaphores. */ > > +#if __TIMESIZE == 32 > > +struct semid_ds > > +{ > > + struct ipc_perm sem_perm; /* operation permission struct */ > > + __time_t sem_otime; /* last semop() time */ > > + __syscall_ulong_t __glibc_reserved1; > > + __time_t sem_ctime; /* last time changed by semctl() */ > > + __syscall_ulong_t __glibc_reserved2; > > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > > + __syscall_ulong_t __glibc_reserved3; > > + __syscall_ulong_t __glibc_reserved4; > > +}; > > +#else > > struct semid_ds > > { > > struct ipc_perm sem_perm; /* operation permission struct */ > > - __SEM_PAD_TIME (sem_otime, 1); /* last semop() time */ > > - __SEM_PAD_TIME (sem_ctime, 2); /* last time changed by semctl() */ > > + __time_t sem_otime; /* last semop() time */ > > + __time_t sem_ctime; /* last time changed by semctl() */ > > Shouldn't be __time64_t? They should be the same as we are outside the __TIMESIZE == 32 define, time_t just seemed more generic. Do you want me to change it? > > > __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > > __syscall_ulong_t __glibc_reserved3; > > __syscall_ulong_t __glibc_reserved4; > > }; > > +#endif> diff --git a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h > > new file mode 100644 > > index 0000000000..fbc26ef2ca > > --- /dev/null > > +++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h > > @@ -0,0 +1,46 @@ > > +/* HPPA implementation of the semaphore struct semid_ds > > + Copyright (C) 1995-2020 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/>. */ > > + > > +#ifndef _SYS_SEM_H > > +# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." > > +#endif > > + > > +/* Data structure describing a set of semaphores. */ > > +#if __TIMESIZE == 32 > > +struct semid_ds > > +{ > > + struct ipc_perm sem_perm; /* operation permission struct */ > > + __syscall_ulong_t __glibc_reserved1; > > + __time_t sem_otime; /* last semop() time */ > > + __syscall_ulong_t __glibc_reserved2; > > + __time_t sem_ctime; /* last time changed by semctl() */ > > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > > + __syscall_ulong_t __glibc_reserved3; > > + __syscall_ulong_t __glibc_reserved4; > > +}; > > Ok. > > > +#else > > +struct semid_ds > > +{ > > + struct ipc_perm sem_perm; /* operation permission struct */ > > + __time_t sem_otime; /* last semop() time */ > > + __time_t sem_ctime; /* last time changed by semctl() */ > > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > > + __syscall_ulong_t __glibc_reserved3; > > + __syscall_ulong_t __glibc_reserved4; > > +}; > > +#endif > > There is no support for 64-bit userland neither it is a valid glibc > support ABI, so we can remove it. Removed! > > > diff --git a/sysdeps/unix/sysv/linux/mips/bits/sem-pad.h b/sysdeps/unix/sysv/linux/mips/bits/sem-pad.h > > deleted file mode 100644 > > index 4c581f7694..0000000000 > > --- a/sysdeps/unix/sysv/linux/mips/bits/sem-pad.h > > +++ /dev/null > > @@ -1,24 +0,0 @@ > > -/* Define where padding goes in struct semid_ds. MIPS version. > > - Copyright (C) 2018-2020 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/>. */ > > - > > -#ifndef _SYS_SEM_H > > -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." > > -#endif > > - > > -#define __SEM_PAD_AFTER_TIME 0 > > -#define __SEM_PAD_BEFORE_TIME 0 > > Ok. > > > diff --git a/sysdeps/unix/sysv/linux/sparc/bits/sem-pad.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h > > similarity index 56% > > rename from sysdeps/unix/sysv/linux/sparc/bits/sem-pad.h > > rename to sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h > > index 5f4e214d12..8954209a29 100644 > > --- a/sysdeps/unix/sysv/linux/sparc/bits/sem-pad.h > > +++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h > > @@ -1,5 +1,5 @@ > > -/* Define where padding goes in struct semid_ds. SPARC version. > > - Copyright (C) 2018-2020 Free Software Foundation, Inc. > > +/* MIPS implementation of the semaphore struct semid_ds > > + Copyright (C) 1995-2020 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 > > @@ -17,10 +17,16 @@ > > <https://www.gnu.org/licenses/>. */ > > > > #ifndef _SYS_SEM_H > > -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." > > +# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." > > #endif > > > > -#include <bits/timesize.h> > > - > > -#define __SEM_PAD_AFTER_TIME 0 > > -#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32) > > +/* Data structure describing a set of semaphores. */ > > +struct semid_ds > > +{ > > + struct ipc_perm sem_perm; /* operation permission struct */ > > + __time_t sem_otime; /* last semop() time */ > > + __time_t sem_ctime; /* last time changed by semctl() */ > > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > > + __syscall_ulong_t __glibc_reserved3; > > + __syscall_ulong_t __glibc_reserved4; > > +}; > > Ok. > > > diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/sem-pad.h b/sysdeps/unix/sysv/linux/powerpc/bits/sem-pad.h > > deleted file mode 100644 > > index 42d8827906..0000000000 > > --- a/sysdeps/unix/sysv/linux/powerpc/bits/sem-pad.h > > +++ /dev/null > > @@ -1,26 +0,0 @@ > > -/* Define where padding goes in struct semid_ds. PowerPC version. > > - Copyright (C) 2018-2020 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/>. */ > > - > > -#ifndef _SYS_SEM_H > > -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." > > -#endif > > - > > -#include <bits/timesize.h> > > - > > -#define __SEM_PAD_AFTER_TIME 0 > > -#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32) > > Ok. > > > diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h > > new file mode 100644 > > index 0000000000..d393141808 > > --- /dev/null > > +++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h > > @@ -0,0 +1,46 @@ > > +/* PowerPC implementation of the semaphore struct semid_ds > > Missing period. Added > > > + Copyright (C) 1995-2020 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/>. */ > > + > > +#ifndef _SYS_SEM_H > > +# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." > > +#endif > > + > > +/* Data structure describing a set of semaphores. */ > > +#if __TIMESIZE == 32 > > +struct semid_ds > > +{ > > + struct ipc_perm sem_perm; /* operation permission struct */ > > + __syscall_ulong_t __glibc_reserved1; > > + __time_t sem_otime; /* last semop() time */ > > + __syscall_ulong_t __glibc_reserved2; > > + __time_t sem_ctime; /* last time changed by semctl() */ > > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > > + __syscall_ulong_t __glibc_reserved3; > > + __syscall_ulong_t __glibc_reserved4; > > +}; > > +#else > > +struct semid_ds > > +{ > > + struct ipc_perm sem_perm; /* operation permission struct */ > > + __time_t sem_otime; /* last semop() time */ > > + __time_t sem_ctime; /* last time changed by semctl() */ > > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > > + __syscall_ulong_t __glibc_reserved3; > > + __syscall_ulong_t __glibc_reserved4; > > +}; > > +#endif > > Ok, although it can be simplified to: > > struct semid_ds > { > struct ipc_perm sem_perm; > #if __TIMESIZE == 32 > __syscall_ulong_t __glibc_reserved1; > __time_t sem_otime; > __syscall_ulong_t __glibc_reserved2; > __time_t sem_ctime; > #else > __time_t sem_otime; > __time_t sem_ctime; > #endif > __syscall_ulong_t sem_nsems; > __syscall_ulong_t __glibc_reserved3; > __syscall_ulong_t __glibc_reserved4; > }; Done > > > diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h > > new file mode 100644 > > index 0000000000..84c7a9022a > > --- /dev/null > > +++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h > > @@ -0,0 +1,46 @@ > > +/* Sparc implementation of the semaphore struct semid_ds > > + Copyright (C) 1995-2020 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/>. */ > > + > > +#ifndef _SYS_SEM_H > > +# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." > > +#endif > > + > > +/* Data structure describing a set of semaphores. */ > > +#if __TIMESIZE == 32 > > +struct semid_ds > > +{ > > + struct ipc_perm sem_perm; /* operation permission struct */ > > + __syscall_ulong_t __glibc_reserved1; > > + __time_t sem_otime; /* last semop() time */ > > + __syscall_ulong_t __glibc_reserved2; > > + __time_t sem_ctime; /* last time changed by semctl() */ > > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > > + __syscall_ulong_t __glibc_reserved3; > > + __syscall_ulong_t __glibc_reserved4; > > +}; > > +#else > > +struct semid_ds > > +{ > > + struct ipc_perm sem_perm; /* operation permission struct */ > > + __time_t sem_otime; /* last semop() time */ > > + __time_t sem_ctime; /* last time changed by semctl() */ > > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > > + __syscall_ulong_t __glibc_reserved3; > > + __syscall_ulong_t __glibc_reserved4; > > +}; > > +#endif > > Ok, although it also can be simplified as the powerpc one. Done. Thanks for the review. Alistair > > > diff --git a/sysdeps/unix/sysv/linux/x86/bits/sem-pad.h b/sysdeps/unix/sysv/linux/x86/bits/sem-pad.h > > deleted file mode 100644 > > index 102e226997..0000000000 > > --- a/sysdeps/unix/sysv/linux/x86/bits/sem-pad.h > > +++ /dev/null > > @@ -1,24 +0,0 @@ > > -/* Define where padding goes in struct semid_ds. x86 version. > > - Copyright (C) 2018-2020 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/>. */ > > - > > -#ifndef _SYS_SEM_H > > -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." > > -#endif > > - > > -#define __SEM_PAD_AFTER_TIME 1 > > -#define __SEM_PAD_BEFORE_TIME 0 > > Ok. > > > diff --git a/sysdeps/unix/sysv/linux/hppa/bits/sem-pad.h b/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h > > similarity index 52% > > rename from sysdeps/unix/sysv/linux/hppa/bits/sem-pad.h > > rename to sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h > > index ee0332325b..22f0645f85 100644 > > --- a/sysdeps/unix/sysv/linux/hppa/bits/sem-pad.h > > +++ b/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h > > @@ -1,5 +1,5 @@ > > -/* Define where padding goes in struct semid_ds. HPPA version. > > - Copyright (C) 2018-2020 Free Software Foundation, Inc. > > +/* Sparc implementation of the semaphore struct semid_ds > > + Copyright (C) 1995-2020 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 > > @@ -17,10 +17,18 @@ > > <https://www.gnu.org/licenses/>. */ > > > > #ifndef _SYS_SEM_H > > -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." > > +# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." > > #endif > > > > -#include <bits/timesize.h> > > - > > -#define __SEM_PAD_AFTER_TIME 0 > > -#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32) > > +/* Data structure describing a set of semaphores. */ > > +struct semid_ds > > +{ > > + struct ipc_perm sem_perm; /* operation permission struct */ > > + __time_t sem_otime; /* last semop() time */ > > + __syscall_ulong_t __glibc_reserved1; > > + __time_t sem_ctime; /* last time changed by semctl() */ > > + __syscall_ulong_t __glibc_reserved2; > > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > > + __syscall_ulong_t __glibc_reserved3; > > + __syscall_ulong_t __glibc_reserved4; > > +}; > > > > Ok. >
On 17/04/2020 17:38, Alistair Francis wrote: > On Fri, Apr 17, 2020 at 12:03 PM Adhemerval Zanella via Libc-alpha > <libc-alpha@sourceware.org> wrote: >> >> >> >> On 01/04/2020 13:53, Alistair Francis via Libc-alpha wrote: >>> Remove the sem-pad.h file and instead have architectures override the >>> struct semid_ds via the bits/types/struct_semid_ds.h file. >> >> Ok with the remarks below. >> >> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> >> >> >>> diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h >>> index ba0719e77a..659db85db8 100644 >>> --- a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h >>> +++ b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h >>> @@ -20,24 +20,27 @@ >>> # error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." >>> #endif >>> >>> -#if __SEM_PAD_BEFORE_TIME >>> -# define __SEM_PAD_TIME(NAME, RES) \ >>> - __syscall_ulong_t __glibc_reserved ## RES; __time_t NAME >>> -#elif __SEM_PAD_AFTER_TIME >>> -# define __SEM_PAD_TIME(NAME, RES) \ >>> - __time_t NAME; __syscall_ulong_t __glibc_reserved ## RES >>> -#else >>> -# define __SEM_PAD_TIME(NAME, RES) \ >>> - __time_t NAME >>> -#endif >>> - >>> /* Data structure describing a set of semaphores. */ >>> +#if __TIMESIZE == 32 >>> +struct semid_ds >>> +{ >>> + struct ipc_perm sem_perm; /* operation permission struct */ >>> + __time_t sem_otime; /* last semop() time */ >>> + __syscall_ulong_t __glibc_reserved1; >>> + __time_t sem_ctime; /* last time changed by semctl() */ >>> + __syscall_ulong_t __glibc_reserved2; >>> + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ >>> + __syscall_ulong_t __glibc_reserved3; >>> + __syscall_ulong_t __glibc_reserved4; >>> +}; >>> +#else >>> struct semid_ds >>> { >>> struct ipc_perm sem_perm; /* operation permission struct */ >>> - __SEM_PAD_TIME (sem_otime, 1); /* last semop() time */ >>> - __SEM_PAD_TIME (sem_ctime, 2); /* last time changed by semctl() */ >>> + __time_t sem_otime; /* last semop() time */ >>> + __time_t sem_ctime; /* last time changed by semctl() */ >> >> Shouldn't be __time64_t? > > They should be the same as we are outside the __TIMESIZE == 32 define, > time_t just seemed more generic. > > Do you want me to change it? Alright, it we can adjust once 64-bit time_t support is added on SysV.
On Mon, Apr 20, 2020 at 1:18 PM Adhemerval Zanella <adhemerval.zanella@linaro.org> wrote: > > > > On 17/04/2020 17:38, Alistair Francis wrote: > > On Fri, Apr 17, 2020 at 12:03 PM Adhemerval Zanella via Libc-alpha > > <libc-alpha@sourceware.org> wrote: > >> > >> > >> > >> On 01/04/2020 13:53, Alistair Francis via Libc-alpha wrote: > >>> Remove the sem-pad.h file and instead have architectures override the > >>> struct semid_ds via the bits/types/struct_semid_ds.h file. > >> > >> Ok with the remarks below. > >> > >> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> > >> > > >> > >>> diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h > >>> index ba0719e77a..659db85db8 100644 > >>> --- a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h > >>> +++ b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h > >>> @@ -20,24 +20,27 @@ > >>> # error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." > >>> #endif > >>> > >>> -#if __SEM_PAD_BEFORE_TIME > >>> -# define __SEM_PAD_TIME(NAME, RES) \ > >>> - __syscall_ulong_t __glibc_reserved ## RES; __time_t NAME > >>> -#elif __SEM_PAD_AFTER_TIME > >>> -# define __SEM_PAD_TIME(NAME, RES) \ > >>> - __time_t NAME; __syscall_ulong_t __glibc_reserved ## RES > >>> -#else > >>> -# define __SEM_PAD_TIME(NAME, RES) \ > >>> - __time_t NAME > >>> -#endif > >>> - > >>> /* Data structure describing a set of semaphores. */ > >>> +#if __TIMESIZE == 32 > >>> +struct semid_ds > >>> +{ > >>> + struct ipc_perm sem_perm; /* operation permission struct */ > >>> + __time_t sem_otime; /* last semop() time */ > >>> + __syscall_ulong_t __glibc_reserved1; > >>> + __time_t sem_ctime; /* last time changed by semctl() */ > >>> + __syscall_ulong_t __glibc_reserved2; > >>> + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > >>> + __syscall_ulong_t __glibc_reserved3; > >>> + __syscall_ulong_t __glibc_reserved4; > >>> +}; > >>> +#else > >>> struct semid_ds > >>> { > >>> struct ipc_perm sem_perm; /* operation permission struct */ > >>> - __SEM_PAD_TIME (sem_otime, 1); /* last semop() time */ > >>> - __SEM_PAD_TIME (sem_ctime, 2); /* last time changed by semctl() */ > >>> + __time_t sem_otime; /* last semop() time */ > >>> + __time_t sem_ctime; /* last time changed by semctl() */ > >> > >> Shouldn't be __time64_t? > > > > They should be the same as we are outside the __TIMESIZE == 32 define, > > time_t just seemed more generic. > > > > Do you want me to change it? > > Alright, it we can adjust once 64-bit time_t support is added on SysV. Ok, I'll leave it as is. Do you mind reviewing patch 3 as well? Then I can merge this series. Alistair
On 20/04/2020 17:25, Alistair Francis wrote: > On Mon, Apr 20, 2020 at 1:18 PM Adhemerval Zanella > <adhemerval.zanella@linaro.org> wrote: >> >> >> >> On 17/04/2020 17:38, Alistair Francis wrote: >>> On Fri, Apr 17, 2020 at 12:03 PM Adhemerval Zanella via Libc-alpha >>> <libc-alpha@sourceware.org> wrote: >>>> >>>> >>>> >>>> On 01/04/2020 13:53, Alistair Francis via Libc-alpha wrote: >>>>> Remove the sem-pad.h file and instead have architectures override the >>>>> struct semid_ds via the bits/types/struct_semid_ds.h file. >>>> >>>> Ok with the remarks below. >>>> >>>> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> >>>> >> >>>> >>>>> diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h >>>>> index ba0719e77a..659db85db8 100644 >>>>> --- a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h >>>>> +++ b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h >>>>> @@ -20,24 +20,27 @@ >>>>> # error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." >>>>> #endif >>>>> >>>>> -#if __SEM_PAD_BEFORE_TIME >>>>> -# define __SEM_PAD_TIME(NAME, RES) \ >>>>> - __syscall_ulong_t __glibc_reserved ## RES; __time_t NAME >>>>> -#elif __SEM_PAD_AFTER_TIME >>>>> -# define __SEM_PAD_TIME(NAME, RES) \ >>>>> - __time_t NAME; __syscall_ulong_t __glibc_reserved ## RES >>>>> -#else >>>>> -# define __SEM_PAD_TIME(NAME, RES) \ >>>>> - __time_t NAME >>>>> -#endif >>>>> - >>>>> /* Data structure describing a set of semaphores. */ >>>>> +#if __TIMESIZE == 32 >>>>> +struct semid_ds >>>>> +{ >>>>> + struct ipc_perm sem_perm; /* operation permission struct */ >>>>> + __time_t sem_otime; /* last semop() time */ >>>>> + __syscall_ulong_t __glibc_reserved1; >>>>> + __time_t sem_ctime; /* last time changed by semctl() */ >>>>> + __syscall_ulong_t __glibc_reserved2; >>>>> + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ >>>>> + __syscall_ulong_t __glibc_reserved3; >>>>> + __syscall_ulong_t __glibc_reserved4; >>>>> +}; >>>>> +#else >>>>> struct semid_ds >>>>> { >>>>> struct ipc_perm sem_perm; /* operation permission struct */ >>>>> - __SEM_PAD_TIME (sem_otime, 1); /* last semop() time */ >>>>> - __SEM_PAD_TIME (sem_ctime, 2); /* last time changed by semctl() */ >>>>> + __time_t sem_otime; /* last semop() time */ >>>>> + __time_t sem_ctime; /* last time changed by semctl() */ >>>> >>>> Shouldn't be __time64_t? >>> >>> They should be the same as we are outside the __TIMESIZE == 32 define, >>> time_t just seemed more generic. >>> >>> Do you want me to change it? >> >> Alright, it we can adjust once 64-bit time_t support is added on SysV. > > Ok, I'll leave it as is. > > Do you mind reviewing patch 3 as well? Then I can merge this series. Yes, that's my plan for today.
Below a missing nit I just spot. > diff --git a/sysdeps/unix/sysv/linux/hppa/bits/sem-pad.h b/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h > similarity index 52% > rename from sysdeps/unix/sysv/linux/hppa/bits/sem-pad.h > rename to sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h > index ee0332325b..22f0645f85 100644 > --- a/sysdeps/unix/sysv/linux/hppa/bits/sem-pad.h > +++ b/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h > @@ -1,5 +1,5 @@ > -/* Define where padding goes in struct semid_ds. HPPA version. > - Copyright (C) 2018-2020 Free Software Foundation, Inc. > +/* Sparc implementation of the semaphore struct semid_ds s/Sparc/x86 and missing period. > + Copyright (C) 1995-2020 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 > @@ -17,10 +17,18 @@ > <https://www.gnu.org/licenses/>. */ > > #ifndef _SYS_SEM_H > -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." > +# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." > #endif > > -#include <bits/timesize.h> > - > -#define __SEM_PAD_AFTER_TIME 0 > -#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32) > +/* Data structure describing a set of semaphores. */ > +struct semid_ds > +{ > + struct ipc_perm sem_perm; /* operation permission struct */ > + __time_t sem_otime; /* last semop() time */ > + __syscall_ulong_t __glibc_reserved1; > + __time_t sem_ctime; /* last time changed by semctl() */ > + __syscall_ulong_t __glibc_reserved2; > + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ > + __syscall_ulong_t __glibc_reserved3; > + __syscall_ulong_t __glibc_reserved4; > +}; >
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index bbf1d60fc6..84ed4344d3 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -86,7 +86,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/shmlba.h bits/shm-pad.h \ + bits/msq-pad.h bits/shmlba.h bits/shm-pad.h \ bits/termios-struct.h bits/termios-c_cc.h \ bits/termios-c_iflag.h bits/termios-c_oflag.h \ bits/termios-baud.h bits/termios-c_cflag.h \ diff --git a/sysdeps/unix/sysv/linux/bits/sem-pad.h b/sysdeps/unix/sysv/linux/bits/sem-pad.h deleted file mode 100644 index 566ce039cc..0000000000 --- a/sysdeps/unix/sysv/linux/bits/sem-pad.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Define where padding goes in struct semid_ds. Generic version. - Copyright (C) 2018-2020 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/>. */ - -#ifndef _SYS_SEM_H -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." -#endif - -#include <bits/timesize.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. This must match the layout - used for struct semid64_ds in <asm/sembuf.h>, as glibc does not do - layout conversions for this structure. */ - -#define __SEM_PAD_AFTER_TIME (__TIMESIZE == 32) -#define __SEM_PAD_BEFORE_TIME 0 diff --git a/sysdeps/unix/sysv/linux/bits/sem.h b/sysdeps/unix/sysv/linux/bits/sem.h index 0d1813ec67..ba1169fdb3 100644 --- a/sysdeps/unix/sysv/linux/bits/sem.h +++ b/sysdeps/unix/sysv/linux/bits/sem.h @@ -20,7 +20,7 @@ #endif #include <sys/types.h> -#include <bits/sem-pad.h> +#include <bits/timesize.h> #include <bits/types/struct_semid_ds.h> /* Flags for `semop'. */ diff --git a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h index ba0719e77a..659db85db8 100644 --- a/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h +++ b/sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h @@ -20,24 +20,27 @@ # error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." #endif -#if __SEM_PAD_BEFORE_TIME -# define __SEM_PAD_TIME(NAME, RES) \ - __syscall_ulong_t __glibc_reserved ## RES; __time_t NAME -#elif __SEM_PAD_AFTER_TIME -# define __SEM_PAD_TIME(NAME, RES) \ - __time_t NAME; __syscall_ulong_t __glibc_reserved ## RES -#else -# define __SEM_PAD_TIME(NAME, RES) \ - __time_t NAME -#endif - /* Data structure describing a set of semaphores. */ +#if __TIMESIZE == 32 +struct semid_ds +{ + struct ipc_perm sem_perm; /* operation permission struct */ + __time_t sem_otime; /* last semop() time */ + __syscall_ulong_t __glibc_reserved1; + __time_t sem_ctime; /* last time changed by semctl() */ + __syscall_ulong_t __glibc_reserved2; + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ + __syscall_ulong_t __glibc_reserved3; + __syscall_ulong_t __glibc_reserved4; +}; +#else struct semid_ds { struct ipc_perm sem_perm; /* operation permission struct */ - __SEM_PAD_TIME (sem_otime, 1); /* last semop() time */ - __SEM_PAD_TIME (sem_ctime, 2); /* last time changed by semctl() */ + __time_t sem_otime; /* last semop() time */ + __time_t sem_ctime; /* last time changed by semctl() */ __syscall_ulong_t sem_nsems; /* number of semaphores in set */ __syscall_ulong_t __glibc_reserved3; __syscall_ulong_t __glibc_reserved4; }; +#endif diff --git a/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h new file mode 100644 index 0000000000..fbc26ef2ca --- /dev/null +++ b/sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h @@ -0,0 +1,46 @@ +/* HPPA implementation of the semaphore struct semid_ds + Copyright (C) 1995-2020 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/>. */ + +#ifndef _SYS_SEM_H +# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." +#endif + +/* Data structure describing a set of semaphores. */ +#if __TIMESIZE == 32 +struct semid_ds +{ + struct ipc_perm sem_perm; /* operation permission struct */ + __syscall_ulong_t __glibc_reserved1; + __time_t sem_otime; /* last semop() time */ + __syscall_ulong_t __glibc_reserved2; + __time_t sem_ctime; /* last time changed by semctl() */ + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ + __syscall_ulong_t __glibc_reserved3; + __syscall_ulong_t __glibc_reserved4; +}; +#else +struct semid_ds +{ + struct ipc_perm sem_perm; /* operation permission struct */ + __time_t sem_otime; /* last semop() time */ + __time_t sem_ctime; /* last time changed by semctl() */ + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ + __syscall_ulong_t __glibc_reserved3; + __syscall_ulong_t __glibc_reserved4; +}; +#endif diff --git a/sysdeps/unix/sysv/linux/mips/bits/sem-pad.h b/sysdeps/unix/sysv/linux/mips/bits/sem-pad.h deleted file mode 100644 index 4c581f7694..0000000000 --- a/sysdeps/unix/sysv/linux/mips/bits/sem-pad.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Define where padding goes in struct semid_ds. MIPS version. - Copyright (C) 2018-2020 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/>. */ - -#ifndef _SYS_SEM_H -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." -#endif - -#define __SEM_PAD_AFTER_TIME 0 -#define __SEM_PAD_BEFORE_TIME 0 diff --git a/sysdeps/unix/sysv/linux/sparc/bits/sem-pad.h b/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h similarity index 56% rename from sysdeps/unix/sysv/linux/sparc/bits/sem-pad.h rename to sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h index 5f4e214d12..8954209a29 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/sem-pad.h +++ b/sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h @@ -1,5 +1,5 @@ -/* Define where padding goes in struct semid_ds. SPARC version. - Copyright (C) 2018-2020 Free Software Foundation, Inc. +/* MIPS implementation of the semaphore struct semid_ds + Copyright (C) 1995-2020 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 @@ -17,10 +17,16 @@ <https://www.gnu.org/licenses/>. */ #ifndef _SYS_SEM_H -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." +# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." #endif -#include <bits/timesize.h> - -#define __SEM_PAD_AFTER_TIME 0 -#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32) +/* Data structure describing a set of semaphores. */ +struct semid_ds +{ + struct ipc_perm sem_perm; /* operation permission struct */ + __time_t sem_otime; /* last semop() time */ + __time_t sem_ctime; /* last time changed by semctl() */ + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ + __syscall_ulong_t __glibc_reserved3; + __syscall_ulong_t __glibc_reserved4; +}; diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/sem-pad.h b/sysdeps/unix/sysv/linux/powerpc/bits/sem-pad.h deleted file mode 100644 index 42d8827906..0000000000 --- a/sysdeps/unix/sysv/linux/powerpc/bits/sem-pad.h +++ /dev/null @@ -1,26 +0,0 @@ -/* Define where padding goes in struct semid_ds. PowerPC version. - Copyright (C) 2018-2020 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/>. */ - -#ifndef _SYS_SEM_H -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." -#endif - -#include <bits/timesize.h> - -#define __SEM_PAD_AFTER_TIME 0 -#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32) diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h new file mode 100644 index 0000000000..d393141808 --- /dev/null +++ b/sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h @@ -0,0 +1,46 @@ +/* PowerPC implementation of the semaphore struct semid_ds + Copyright (C) 1995-2020 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/>. */ + +#ifndef _SYS_SEM_H +# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." +#endif + +/* Data structure describing a set of semaphores. */ +#if __TIMESIZE == 32 +struct semid_ds +{ + struct ipc_perm sem_perm; /* operation permission struct */ + __syscall_ulong_t __glibc_reserved1; + __time_t sem_otime; /* last semop() time */ + __syscall_ulong_t __glibc_reserved2; + __time_t sem_ctime; /* last time changed by semctl() */ + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ + __syscall_ulong_t __glibc_reserved3; + __syscall_ulong_t __glibc_reserved4; +}; +#else +struct semid_ds +{ + struct ipc_perm sem_perm; /* operation permission struct */ + __time_t sem_otime; /* last semop() time */ + __time_t sem_ctime; /* last time changed by semctl() */ + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ + __syscall_ulong_t __glibc_reserved3; + __syscall_ulong_t __glibc_reserved4; +}; +#endif diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h new file mode 100644 index 0000000000..84c7a9022a --- /dev/null +++ b/sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h @@ -0,0 +1,46 @@ +/* Sparc implementation of the semaphore struct semid_ds + Copyright (C) 1995-2020 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/>. */ + +#ifndef _SYS_SEM_H +# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." +#endif + +/* Data structure describing a set of semaphores. */ +#if __TIMESIZE == 32 +struct semid_ds +{ + struct ipc_perm sem_perm; /* operation permission struct */ + __syscall_ulong_t __glibc_reserved1; + __time_t sem_otime; /* last semop() time */ + __syscall_ulong_t __glibc_reserved2; + __time_t sem_ctime; /* last time changed by semctl() */ + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ + __syscall_ulong_t __glibc_reserved3; + __syscall_ulong_t __glibc_reserved4; +}; +#else +struct semid_ds +{ + struct ipc_perm sem_perm; /* operation permission struct */ + __time_t sem_otime; /* last semop() time */ + __time_t sem_ctime; /* last time changed by semctl() */ + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ + __syscall_ulong_t __glibc_reserved3; + __syscall_ulong_t __glibc_reserved4; +}; +#endif diff --git a/sysdeps/unix/sysv/linux/x86/bits/sem-pad.h b/sysdeps/unix/sysv/linux/x86/bits/sem-pad.h deleted file mode 100644 index 102e226997..0000000000 --- a/sysdeps/unix/sysv/linux/x86/bits/sem-pad.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Define where padding goes in struct semid_ds. x86 version. - Copyright (C) 2018-2020 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/>. */ - -#ifndef _SYS_SEM_H -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." -#endif - -#define __SEM_PAD_AFTER_TIME 1 -#define __SEM_PAD_BEFORE_TIME 0 diff --git a/sysdeps/unix/sysv/linux/hppa/bits/sem-pad.h b/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h similarity index 52% rename from sysdeps/unix/sysv/linux/hppa/bits/sem-pad.h rename to sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h index ee0332325b..22f0645f85 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/sem-pad.h +++ b/sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h @@ -1,5 +1,5 @@ -/* Define where padding goes in struct semid_ds. HPPA version. - Copyright (C) 2018-2020 Free Software Foundation, Inc. +/* Sparc implementation of the semaphore struct semid_ds + Copyright (C) 1995-2020 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 @@ -17,10 +17,18 @@ <https://www.gnu.org/licenses/>. */ #ifndef _SYS_SEM_H -# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead." +# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." #endif -#include <bits/timesize.h> - -#define __SEM_PAD_AFTER_TIME 0 -#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32) +/* Data structure describing a set of semaphores. */ +struct semid_ds +{ + struct ipc_perm sem_perm; /* operation permission struct */ + __time_t sem_otime; /* last semop() time */ + __syscall_ulong_t __glibc_reserved1; + __time_t sem_ctime; /* last time changed by semctl() */ + __syscall_ulong_t __glibc_reserved2; + __syscall_ulong_t sem_nsems; /* number of semaphores in set */ + __syscall_ulong_t __glibc_reserved3; + __syscall_ulong_t __glibc_reserved4; +};