semctl: Remove the sem-pad.h file

Remove the sem-pad.h file and instead have architectures override the
struct semid_ds via the bits/types/struct_semid_ds.h file.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
This commit is contained in:
Alistair Francis 2020-02-25 15:52:59 -08:00
parent 1bf8f30f62
commit 621f295f92
11 changed files with 141 additions and 117 deletions

View File

@ -84,7 +84,7 @@ sysdep_headers += sys/mount.h sys/acct.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/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-struct.h bits/termios-c_cc.h \
bits/termios-c_iflag.h bits/termios-c_oflag.h \ bits/termios-c_iflag.h bits/termios-c_oflag.h \
bits/termios-baud.h bits/termios-c_cflag.h \ bits/termios-baud.h bits/termios-c_cflag.h \

View File

@ -20,7 +20,7 @@
#endif #endif
#include <sys/types.h> #include <sys/types.h>
#include <bits/sem-pad.h> #include <bits/timesize.h>
#include <bits/types/struct_semid_ds.h> #include <bits/types/struct_semid_ds.h>
/* Flags for `semop'. */ /* Flags for `semop'. */

View File

@ -20,24 +20,27 @@
# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead." # error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
#endif #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. */ /* 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 semid_ds
{ {
struct ipc_perm sem_perm; /* operation permission struct */ struct ipc_perm sem_perm; /* operation permission struct */
__SEM_PAD_TIME (sem_otime, 1); /* last semop() time */ __time_t sem_otime; /* last semop() time */
__SEM_PAD_TIME (sem_ctime, 2); /* last time changed by semctl() */ __time_t sem_ctime; /* last time changed by semctl() */
__syscall_ulong_t sem_nsems; /* number of semaphores in set */ __syscall_ulong_t sem_nsems; /* number of semaphores in set */
__syscall_ulong_t __glibc_reserved3; __syscall_ulong_t __glibc_reserved3;
__syscall_ulong_t __glibc_reserved4; __syscall_ulong_t __glibc_reserved4;
}; };
#endif

View File

@ -1,5 +1,5 @@
/* Define where padding goes in struct semid_ds. Generic version. /* HPPA implementation of the semaphore struct semid_ds
Copyright (C) 2018-2020 Free Software Foundation, Inc. Copyright (C) 1995-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -17,17 +17,20 @@
<https://www.gnu.org/licenses/>. */ <https://www.gnu.org/licenses/>. */
#ifndef _SYS_SEM_H #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 #endif
#include <bits/timesize.h> /* Data structure describing a set of semaphores. */
#if __TIMESIZE == 32
/* On most architectures, padding goes after time fields for 32-bit struct semid_ds
systems and is omitted for 64-bit systems. Some architectures pad {
before time fields instead, or omit padding despite being 32-bit, struct ipc_perm sem_perm; /* operation permission struct */
or include it despite being 64-bit. This must match the layout __syscall_ulong_t __glibc_reserved1;
used for struct semid64_ds in <asm/sembuf.h>, as glibc does not do __time_t sem_otime; /* last semop() time */
layout conversions for this structure. */ __syscall_ulong_t __glibc_reserved2;
__time_t sem_ctime; /* last time changed by semctl() */
#define __SEM_PAD_AFTER_TIME (__TIMESIZE == 32) __syscall_ulong_t sem_nsems; /* number of semaphores in set */
#define __SEM_PAD_BEFORE_TIME 0 __syscall_ulong_t __glibc_reserved3;
__syscall_ulong_t __glibc_reserved4;
};
#endif

View File

@ -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

View File

@ -1,5 +1,5 @@
/* Define where padding goes in struct semid_ds. SPARC version. /* MIPS implementation of the semaphore struct semid_ds
Copyright (C) 2018-2020 Free Software Foundation, Inc. Copyright (C) 1995-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -17,10 +17,16 @@
<https://www.gnu.org/licenses/>. */ <https://www.gnu.org/licenses/>. */
#ifndef _SYS_SEM_H #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 #endif
#include <bits/timesize.h> /* Data structure describing a set of semaphores. */
struct semid_ds
#define __SEM_PAD_AFTER_TIME 0 {
#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32) 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;
};

View File

@ -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)

View File

@ -0,0 +1,39 @@
/* 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. */
struct semid_ds
{
struct ipc_perm sem_perm; /* operation permission struct */
#if __TIMESIZE == 32
__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() */
#else
__time_t sem_otime; /* last semop() time */
__time_t sem_ctime; /* last time changed by semctl() */
#endif
__syscall_ulong_t sem_nsems; /* number of semaphores in set */
__syscall_ulong_t __glibc_reserved3;
__syscall_ulong_t __glibc_reserved4;
};

View File

@ -0,0 +1,39 @@
/* 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. */
struct semid_ds
{
struct ipc_perm sem_perm; /* operation permission struct */
#if __TIMESIZE == 32
__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() */
#else
__time_t sem_otime; /* last semop() time */
__time_t sem_ctime; /* last time changed by semctl() */
#endif
__syscall_ulong_t sem_nsems; /* number of semaphores in set */
__syscall_ulong_t __glibc_reserved3;
__syscall_ulong_t __glibc_reserved4;
};

View File

@ -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

View File

@ -1,5 +1,5 @@
/* Define where padding goes in struct semid_ds. HPPA version. /* x86 implementation of the semaphore struct semid_ds.
Copyright (C) 2018-2020 Free Software Foundation, Inc. Copyright (C) 1995-2020 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -17,10 +17,18 @@
<https://www.gnu.org/licenses/>. */ <https://www.gnu.org/licenses/>. */
#ifndef _SYS_SEM_H #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 #endif
#include <bits/timesize.h> /* Data structure describing a set of semaphores. */
struct semid_ds
#define __SEM_PAD_AFTER_TIME 0 {
#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32) 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;
};