include/linux/shm.h
17035 #ifndef _LINUX_SHM_H_
17036 #define _LINUX_SHM_H_
17037
17038 #include <linux/ipc.h>
17039
17040 #include <asm/shmparam.h>
17041
17042 struct shmid_ds {
17043 struct ipc_perm shm_perm; /* operation perms */
17044 int shm_segsz; /* seg sz (bytes) */
17045 __kernel_time_t shm_atime; /* last attach time */
17046 __kernel_time_t shm_dtime; /* last detach time */
17047 __kernel_time_t shm_ctime; /* last change time */
17048 __kernel_ipc_pid_t shm_cpid; /* pid of creator */
17049 __kernel_ipc_pid_t shm_lpid; /* pid of last op */
17050 unsigned short shm_nattch; /* #current attaches*/
17051 unsigned short shm_unused; /* compatibility */
17052 void *shm_unused2; /* ditto - for DIPC */
17053 void *shm_unused3; /* unused */
17054 };
17055
17056 struct shmid_kernel
17057 {
17058 struct shmid_ds u;
17059 /* the following are private */
17060 unsigned long shm_npages; /* seg sz (pages) */
17061 /* array of ptrs to frames -> SHMMAX */
17062 unsigned long *shm_pages;
17063 /* descriptors for attaches */
17064 struct vm_area_struct *attaches;
17065 };
17066
17067 /* permission flag for shmget */
17068 #define SHM_R 0400 /*or S_IRUGO from linux/stat.h*/
17069 #define SHM_W 0200 /*or S_IWUGO from linux/stat.h*/
17070
17071 /* mode for attach */
17072 #define SHM_RDONLY 010000 /* read-only access */
17073 #define SHM_RND 020000 /* round attach addr to
17074 SHMLBA boundary */
17075 #define SHM_REMAP 040000 /*take over region on attach*/
17076
17077 /* super user shmctl commands */
17078 #define SHM_LOCK 11
17079 #define SHM_UNLOCK 12
17080
17081 /* ipcs ctl commands */
17082 #define SHM_STAT 13
17083 #define SHM_INFO 14
17084
17085 struct shminfo {
17086 int shmmax;
17087 int shmmin;
17088 int shmmni;
17089 int shmseg;
17090 int shmall;
17091 };
17092
17093 struct shm_info {
17094 int used_ids;
17095 unsigned long shm_tot; /* total allocated shm */
17096 unsigned long shm_rss; /* total resident shm */
17097 unsigned long shm_swp; /* total swapped shm */
17098 unsigned long swap_attempts;
17099 unsigned long swap_successes;
17100 };
17101
17102 #ifdef __KERNEL__
17103
17104 /* shm_mode upper byte flags */
17105 /* segment will be destroyed on last detach */
17106 #define SHM_DEST 01000
17107 /* segment will not be swapped */
17108 #define SHM_LOCKED 02000
17109
17110 asmlinkage int sys_shmget(key_t key, int size,
17111 int flag);
17112 asmlinkage int sys_shmat(int shmid, char *shmaddr,
17113 int shmflg,unsigned long *addr);
17114 asmlinkage int sys_shmdt (char *shmaddr);
17115 asmlinkage int sys_shmctl (int shmid, int cmd,
17116 struct shmid_ds *buf);
17117 extern void shm_unuse(unsigned long entry,
17118 unsigned long page);
17119
17120 #endif /* __KERNEL__ */
17121
17122 #endif /* _LINUX_SHM_H_ */
Сайт управляется системой
uCoz