/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _LINUX_SEM_H #define _LINUX_SEM_H #include <linux/atomic.h> #include <linux/rcupdate.h> #include <linux/cache.h> #include <linux/time64.h> #include <uapi/linux/sem.h> struct task_struct; /* One semaphore structure for each semaphore in the system. */ struct sem { int semval; /* current value */ /* * PID of the process that last modified the semaphore. For * Linux, specifically these are: * - semop * - semctl, via SETVAL and SETALL. * - at task exit when performing undo adjustments (see exit_sem). */ int sempid; spinlock_t lock; /* spinlock for fine-grained semtimedop */ struct list_head pending_alter; /* pending single-sop operations */ /* that alter the semaphore */ struct list_head pending_const; /* pending single-sop operations */ /* that do not alter the semaphore*/ time_t sem_otime; /* candidate for sem_otime */ } ____cacheline_aligned_in_smp; /* One sem_array data structure for each set of semaphores in the system. */ struct sem_array { struct kern_ipc_perm sem_perm; /* permissions .. see ipc.h */ time64_t sem_ctime; /* create/last semctl() time */ struct list_head pending_alter; /* pending operations */ /* that alter the array */ struct list_head pending_const; /* pending complex operations */ /* that do not alter semvals */ struct list_head list_id; /* undo requests on this array */ int sem_nsems; /* no. of semaphores in array */ int complex_count; /* pending complex operations */ unsigned int use_global_lock;/* >0: global lock required */ struct sem sems[]; } __randomize_layout; #ifdef CONFIG_SYSVIPC struct sysv_sem { struct sem_undo_list *undo_list; }; extern int copy_semundo(unsigned long clone_flags, struct task_struct *tsk); extern void exit_sem(struct task_struct *tsk); #else struct sysv_sem { /* empty */ };
static inline int copy_semundo(unsigned long clone_flags, struct task_struct *tsk) { return 0; }Contributors
Person | Tokens | Prop | Commits | CommitProp |
Andrew Morton | 19 | 100.00% | 1 | 100.00% |
Total | 19 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
Andrew Morton | 13 | 100.00% | 1 | 100.00% |
Total | 13 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
Manfred Spraul | 76 | 39.38% | 11 | 52.38% |
Andrew Morton | 60 | 31.09% | 2 | 9.52% |
Linus Torvalds (pre-git) | 34 | 17.62% | 2 | 9.52% |
Dave Olien | 10 | 5.18% | 1 | 4.76% |
David Howells | 4 | 2.07% | 1 | 4.76% |
Deepa Dinamani | 4 | 2.07% | 1 | 4.76% |
Tim Schmielau | 3 | 1.55% | 1 | 4.76% |
Greg Kroah-Hartman | 1 | 0.52% | 1 | 4.76% |
Kees Cook | 1 | 0.52% | 1 | 4.76% |
Davidlohr Bueso A | 0.00% | 0 | 0.00% | |
Total | 193 | 100.00% | 21 | 100.00% |