#ifndef _LINUX_SHM_H_ #define _LINUX_SHM_H_ #include <linux/list.h> #include <asm/page.h> #include <uapi/linux/shm.h> #include <asm/shmparam.h> struct shmid_kernel /* private to the kernel */ { struct kern_ipc_perm shm_perm; struct file *shm_file; unsigned long shm_nattch; unsigned long shm_segsz; time_t shm_atim; time_t shm_dtim; time_t shm_ctim; pid_t shm_cprid; pid_t shm_lprid; struct user_struct *mlock_user; /* The task created the shm object. NULL if the task is dead. */ struct task_struct *shm_creator; struct list_head shm_clist; /* list by creator */ } __randomize_layout; /* shm_mode upper byte flags */ #define SHM_DEST 01000 /* segment will be destroyed on last detach */ #define SHM_LOCKED 02000 /* segment will not be swapped */ #define SHM_HUGETLB 04000 /* segment will use huge TLB pages */ #define SHM_NORESERVE 010000 /* don't check for reservations */ /* Bits [26:31] are reserved */ /* * When SHM_HUGETLB is set bits [26:31] encode the log2 of the huge page size. * This gives us 6 bits, which is enough until someone invents 128 bit address * spaces. * * Assume these are all power of twos. * When 0 use the default page size. */ #define SHM_HUGE_SHIFT 26 #define SHM_HUGE_MASK 0x3f #define SHM_HUGE_2MB (21 << SHM_HUGE_SHIFT) #define SHM_HUGE_1GB (30 << SHM_HUGE_SHIFT) #ifdef CONFIG_SYSVIPC struct sysv_shm { struct list_head shm_clist; }; long do_shmat(int shmid, char __user *shmaddr, int shmflg, unsigned long *addr, unsigned long shmlba); bool is_file_shm_hugepages(struct file *file); void exit_shm(struct task_struct *task); #define shm_init_task(task) INIT_LIST_HEAD(&(task)->sysvshm.shm_clist) #else struct sysv_shm { /* empty */ };
static inline long do_shmat(int shmid, char __user *shmaddr, int shmflg, unsigned long *addr, unsigned long shmlba) { return -ENOSYS; }Contributors
Person | Tokens | Prop | Commits | CommitProp |
Manfred Spraul | 26 | 83.87% | 1 | 33.33% |
Will Deacon | 4 | 12.90% | 1 | 33.33% |
Andrew Morton | 1 | 3.23% | 1 | 33.33% |
Total | 31 | 100.00% | 3 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
Adam Litke | 13 | 86.67% | 1 | 50.00% |
Yaowei Bai | 2 | 13.33% | 1 | 50.00% |
Total | 15 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
Vasiliy Kulikov | 11 | 100.00% | 1 | 100.00% |
Total | 11 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
Jack Miller | 11 | 100.00% | 1 | 100.00% |
Total | 11 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
Linus Torvalds (pre-git) | 44 | 17.32% | 6 | 26.09% |
Jack Miller | 41 | 16.14% | 1 | 4.35% |
Greg Kroah-Hartman | 38 | 14.96% | 1 | 4.35% |
Manfred Spraul | 34 | 13.39% | 1 | 4.35% |
Vasiliy Kulikov | 26 | 10.24% | 2 | 8.70% |
Adam Litke | 21 | 8.27% | 1 | 4.35% |
Andi Kleen | 18 | 7.09% | 1 | 4.35% |
Will Deacon | 8 | 3.15% | 1 | 4.35% |
Andrew Morton | 6 | 2.36% | 2 | 8.70% |
Rik Van Riel | 5 | 1.97% | 1 | 4.35% |
Badari Pulavarty | 5 | 1.97% | 1 | 4.35% |
Yaowei Bai | 3 | 1.18% | 1 | 4.35% |
Kirill A. Shutemov | 2 | 0.79% | 1 | 4.35% |
Linus Torvalds | 1 | 0.39% | 1 | 4.35% |
David Howells | 1 | 0.39% | 1 | 4.35% |
Kees Cook | 1 | 0.39% | 1 | 4.35% |
Total | 254 | 100.00% | 23 | 100.00% |