#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 */ }; /* 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.39% | 6 | 27.27% |
Jack Miller | 41 | 16.21% | 1 | 4.55% |
Greg Kroah-Hartman | 38 | 15.02% | 1 | 4.55% |
Manfred Spraul | 34 | 13.44% | 1 | 4.55% |
Vasiliy Kulikov | 26 | 10.28% | 2 | 9.09% |
Adam Litke | 21 | 8.30% | 1 | 4.55% |
Andi Kleen | 18 | 7.11% | 1 | 4.55% |
Will Deacon | 8 | 3.16% | 1 | 4.55% |
Andrew Morton | 6 | 2.37% | 2 | 9.09% |
Rik Van Riel | 5 | 1.98% | 1 | 4.55% |
Badari Pulavarty | 5 | 1.98% | 1 | 4.55% |
Yaowei Bai | 3 | 1.19% | 1 | 4.55% |
Kirill A. Shutemov | 2 | 0.79% | 1 | 4.55% |
David Howells | 1 | 0.40% | 1 | 4.55% |
Linus Torvalds | 1 | 0.40% | 1 | 4.55% |
Total | 253 | 100.00% | 22 | 100.00% |