linux/include/linux/sem.h
<<
>>
Prefs
   1#ifndef _LINUX_SEM_H
   2#define _LINUX_SEM_H
   3
   4#include <linux/atomic.h>
   5#include <linux/rcupdate.h>
   6#include <linux/cache.h>
   7#include <uapi/linux/sem.h>
   8
   9struct task_struct;
  10
  11/* One sem_array data structure for each set of semaphores in the system. */
  12struct sem_array {
  13        struct kern_ipc_perm    ____cacheline_aligned_in_smp
  14                                sem_perm;       /* permissions .. see ipc.h */
  15        time_t                  sem_otime;      /* last semop time */
  16        time_t                  sem_ctime;      /* last change time */
  17        struct sem              *sem_base;      /* ptr to first semaphore in array */
  18        struct list_head        sem_pending;    /* pending operations to be processed */
  19        struct list_head        list_id;        /* undo requests on this array */
  20        int                     sem_nsems;      /* no. of semaphores in array */
  21        int                     complex_count;  /* pending complex operations */
  22};
  23
  24#ifdef CONFIG_SYSVIPC
  25
  26struct sysv_sem {
  27        struct sem_undo_list *undo_list;
  28};
  29
  30extern int copy_semundo(unsigned long clone_flags, struct task_struct *tsk);
  31extern void exit_sem(struct task_struct *tsk);
  32
  33#else
  34
  35struct sysv_sem {
  36        /* empty */
  37};
  38
  39static inline int copy_semundo(unsigned long clone_flags, struct task_struct *tsk)
  40{
  41        return 0;
  42}
  43
  44static inline void exit_sem(struct task_struct *tsk)
  45{
  46        return;
  47}
  48#endif
  49
  50#endif /* _LINUX_SEM_H */
  51