cregit-Linux how code gets into the kernel

Release 4.12 include/linux/shm.h

Directory: include/linux
#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

PersonTokensPropCommitsCommitProp
Manfred Spraul2683.87%133.33%
Will Deacon412.90%133.33%
Andrew Morton13.23%133.33%
Total31100.00%3100.00%


static inline bool is_file_shm_hugepages(struct file *file) { return false; }

Contributors

PersonTokensPropCommitsCommitProp
Adam Litke1386.67%150.00%
Yaowei Bai213.33%150.00%
Total15100.00%2100.00%


static inline void exit_shm(struct task_struct *task) { }

Contributors

PersonTokensPropCommitsCommitProp
Vasiliy Kulikov11100.00%1100.00%
Total11100.00%1100.00%


static inline void shm_init_task(struct task_struct *task) { }

Contributors

PersonTokensPropCommitsCommitProp
Jack Miller11100.00%1100.00%
Total11100.00%1100.00%

#endif #endif /* _LINUX_SHM_H_ */

Overall Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)4417.39%627.27%
Jack Miller4116.21%14.55%
Greg Kroah-Hartman3815.02%14.55%
Manfred Spraul3413.44%14.55%
Vasiliy Kulikov2610.28%29.09%
Adam Litke218.30%14.55%
Andi Kleen187.11%14.55%
Will Deacon83.16%14.55%
Andrew Morton62.37%29.09%
Rik Van Riel51.98%14.55%
Badari Pulavarty51.98%14.55%
Yaowei Bai31.19%14.55%
Kirill A. Shutemov20.79%14.55%
David Howells10.40%14.55%
Linus Torvalds10.40%14.55%
Total253100.00%22100.00%
Directory: include/linux
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.