sembuf.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
  2. #ifndef __ASM_GENERIC_SEMBUF_H
  3. #define __ASM_GENERIC_SEMBUF_H
  4. #include <asm/bitsperlong.h>
  5. /*
  6. * The semid64_ds structure for x86 architecture.
  7. * Note extra padding because this structure is passed back and forth
  8. * between kernel and user space.
  9. *
  10. * semid64_ds was originally meant to be architecture specific, but
  11. * everyone just ended up making identical copies without specific
  12. * optimizations, so we may just as well all use the same one.
  13. *
  14. * 64 bit architectures typically define a 64 bit __kernel_time_t,
  15. * so they do not need the first two padding words.
  16. * On big-endian systems, the padding is in the wrong place.
  17. *
  18. * Pad space is left for:
  19. * - 64-bit time_t to solve y2038 problem
  20. * - 2 miscellaneous 32-bit values
  21. */
  22. struct semid64_ds {
  23. struct ipc64_perm sem_perm; /* permissions .. see ipc.h */
  24. __kernel_time_t sem_otime; /* last semop time */
  25. #if __BITS_PER_LONG != 64
  26. unsigned long __unused1;
  27. #endif
  28. __kernel_time_t sem_ctime; /* last change time */
  29. #if __BITS_PER_LONG != 64
  30. unsigned long __unused2;
  31. #endif
  32. unsigned long sem_nsems; /* no. of semaphores in array */
  33. unsigned long __unused3;
  34. unsigned long __unused4;
  35. };
  36. #endif /* __ASM_GENERIC_SEMBUF_H */