Files
linux-apfs/include/linux/sem.h
T

51 lines
1.2 KiB
C
Raw Normal View History

2005-04-16 15:20:36 -07:00
#ifndef _LINUX_SEM_H
#define _LINUX_SEM_H
2011-07-26 16:09:06 -07:00
#include <linux/atomic.h>
2008-07-25 01:48:06 -07:00
#include <linux/rcupdate.h>
#include <linux/cache.h>
2012-10-13 10:46:48 +01:00
#include <uapi/linux/sem.h>
2005-04-16 15:20:36 -07:00
2005-11-07 00:59:43 -08:00
struct task_struct;
2005-04-16 15:20:36 -07:00
/* One sem_array data structure for each set of semaphores in the system. */
struct sem_array {
struct kern_ipc_perm ____cacheline_aligned_in_smp
sem_perm; /* permissions .. see ipc.h */
2005-04-16 15:20:36 -07:00
time_t sem_otime; /* last semop time */
time_t sem_ctime; /* last change time */
struct sem *sem_base; /* ptr to first semaphore in array */
struct list_head sem_pending; /* pending operations to be processed */
struct list_head list_id; /* undo requests on this array */
2009-12-15 16:47:32 -08:00
int sem_nsems; /* no. of semaphores in array */
int complex_count; /* pending complex operations */
2005-04-16 15:20:36 -07:00
};
#ifdef CONFIG_SYSVIPC
2005-04-16 15:20:36 -07:00
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 */
};
2005-04-16 15:20:36 -07:00
static inline int copy_semundo(unsigned long clone_flags, struct task_struct *tsk)
{
return 0;
}
static inline void exit_sem(struct task_struct *tsk)
{
return;
}
#endif
#endif /* _LINUX_SEM_H */