⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shm.h

📁 linux1.1源代码
💻 H
字号:
#ifndef _LINUX_SHM_H_#define _LINUX_SHM_H_#include <linux/ipc.h>struct shmid_ds {	struct	ipc_perm shm_perm;	/* operation perms */	int	shm_segsz;		/* size of segment (bytes) */	time_t	shm_atime;		/* last attach time */	time_t	shm_dtime;		/* last detach time */	time_t	shm_ctime;		/* last change time */	unsigned short	shm_cpid;	/* pid of creator */	unsigned short	shm_lpid;	/* pid of last operator */	short	shm_nattch;		/* no. of current attaches */	/* the following are private */	unsigned short   shm_npages;  /* size of segment (pages) */	unsigned long   *shm_pages;   /* array of ptrs to frames -> SHMMAX */ 	struct shm_desc *attaches;    /* descriptors for attaches */};/* mode for attach */#define	SHM_RDONLY	010000	/* read-only access */#define	SHM_RND		020000	/* round attach address to SHMLBA boundary */#define	SHM_REMAP	040000	/* take-over region on attach *//* super user shmctl commands */#define SHM_LOCK 	11#define SHM_UNLOCK 	12struct	shminfo {    int shmmax;	    int shmmin;	    int shmmni;	    int shmseg;	    int shmall;	};#define SHM_RANGE_START	0x40000000#define SHM_RANGE_END	0x60000000				/* _SHM_ID_BITS is a variable you can adjust to */				/* tune the kernel.  It determines the value of */				/* SHMMNI, which specifies the maximum no. of */				/* shared segments (system wide).  SRB. */#define _SHM_ID_BITS	7		/* keep as low as possible */					/* a static array is declared */					/* using SHMMNI */#define __SHM_IDX_BITS	(BITS_PER_PTR-2-SHM_IDX_SHIFT)/* !!!!!!!????? * Why reserve the two (2) high bits of the signature (shm_sgn) field? * Since, as far as I can see, only the high bit is used (SHM_READ_ONLY). *						SRB. */#define _SHM_IDX_BITS	(__SHM_IDX_BITS+PAGE_SHIFT>=BITS_PER_PTR?\ BITS_PER_PTR-PAGE_SHIFT-1:__SHM_IDX_BITS)	/* sanity check *//* not present page table entry format bit 0 is 0, low byte defined in mm.h */#define SHM_ID_SHIFT	8#define SHM_ID_MASK	((1<<_SHM_ID_BITS)-1)#define SHM_IDX_SHIFT	(SHM_ID_SHIFT+_SHM_ID_BITS)#define SHM_IDX_MASK	((1<<_SHM_IDX_BITS)-1)#define SHM_READ_ONLY	(1<<(BITS_PER_PTR-1))#define SHMMAX 0x3fa000				/* max shared seg size (bytes) */#define SHMMIN 1	 /* really PAGE_SIZE */	/* min shared seg size (bytes) */#define SHMMNI (1<<_SHM_ID_BITS)		/* max num of segs system wide */#define SHMALL (1<<(_SHM_IDX_BITS+_SHM_ID_BITS))/* max shm system wide (pages) */#define	SHMLBA 0x1000				/* attach addr a multiple of this */#define SHMSEG SHMMNI				/* max shared segs per process */#ifdef __KERNEL__/* 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 *//* ipcs ctl commands */#define SHM_STAT 	13#define SHM_INFO 	14struct shm_info {	int   used_ids;	ulong shm_tot; /* total allocated shm */	ulong shm_rss; /* total resident shm */	ulong shm_swp; /* total swapped shm */	ulong swap_attempts;	ulong swap_successes;};/* * Per process internal structure for managing segments. * A shmat will add to and shmdt will remove from the list. */struct	shm_desc {	struct task_struct *task;     /* attacher */	unsigned long shm_sgn;        /* signature for this attach */	unsigned long start;   /* virt addr of attach, multiple of SHMLBA */	unsigned long end;            /* multiple of SHMLBA */	struct shm_desc *task_next;   /* next attach for task */	struct shm_desc *seg_next;    /* next attach for segment */};#endif /* __KERNEL__ */#endif /* _LINUX_SHM_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -