| /* SPDX-License-Identifier: GPL-2.0 */ | 
 | #ifndef _LINUX_SEM_H | 
 | #define _LINUX_SEM_H | 
 |  | 
 | #include <uapi/linux/sem.h> | 
 |  | 
 | struct task_struct; | 
 | struct sem_undo_list; | 
 |  | 
 | #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; | 
 | } | 
 |  | 
 | static inline void exit_sem(struct task_struct *tsk) | 
 | { | 
 | 	return; | 
 | } | 
 | #endif | 
 |  | 
 | #endif /* _LINUX_SEM_H */ |