1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _LINUX_SHM_H_ 3 #define _LINUX_SHM_H_ 4 5 #include <linux/types.h> 6 #include <asm/page.h> 7 #include <asm/shmparam.h> 8 9 struct file; 10 struct task_struct; 11 12 #ifdef CONFIG_SYSVIPC 13 struct sysv_shm { 14 struct list_head shm_clist; 15 }; 16 17 long do_shmat(int shmid, char __user *shmaddr, int shmflg, unsigned long *addr, 18 unsigned long shmlba); 19 bool is_file_shm_hugepages(struct file *file); 20 void exit_shm(struct task_struct *task); 21 #define shm_init_task(task) INIT_LIST_HEAD(&(task)->sysvshm.shm_clist) 22 #else 23 struct sysv_shm { 24 /* empty */ 25 }; 26 27 static inline long do_shmat(int shmid, char __user *shmaddr, 28 int shmflg, unsigned long *addr, 29 unsigned long shmlba) 30 { 31 return -ENOSYS; 32 } 33 static inline bool is_file_shm_hugepages(struct file *file) 34 { 35 return false; 36 } 37 static inline void exit_shm(struct task_struct *task) 38 { 39 } 40 static inline void shm_init_task(struct task_struct *task) 41 { 42 } 43 #endif 44 45 #endif /* _LINUX_SHM_H_ */ 46