1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-01 10:06:57 +03:00

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 246a53d3c6
commit 05332ac38b
11 changed files with 141 additions and 117 deletions

View File

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

View File

@ -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'. */

View File

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