linux/include/linux/shm.h
<<
>>
Prefs
   1#ifndef _LINUX_SHM_H_
   2#define _LINUX_SHM_H_
   3
   4#include <asm/page.h>
   5#include <uapi/linux/shm.h>
   6
   7#define SHMALL (SHMMAX/PAGE_SIZE*(SHMMNI/16)) /* max shm system wide (pages) */
   8#include <asm/shmparam.h>
   9struct shmid_kernel /* private to the kernel */
  10{       
  11        struct kern_ipc_perm    shm_perm;
  12        struct file *           shm_file;
  13        unsigned long           shm_nattch;
  14        unsigned long           shm_segsz;
  15        time_t                  shm_atim;
  16        time_t                  shm_dtim;
  17        time_t                  shm_ctim;
  18        pid_t                   shm_cprid;
  19        pid_t                   shm_lprid;
  20        struct user_struct      *mlock_user;
  21
  22        /* The task created the shm object.  NULL if the task is dead. */
  23        struct task_struct      *shm_creator;
  24};
  25
  26/* shm_mode upper byte flags */
  27#define SHM_DEST        01000   /* segment will be destroyed on last detach */
  28#define SHM_LOCKED      02000   /* segment will not be swapped */
  29#define SHM_HUGETLB     04000   /* segment will use huge TLB pages */
  30#define SHM_NORESERVE   010000  /* don't check for reservations */
  31
  32#ifdef CONFIG_SYSVIPC
  33long do_shmat(int shmid, char __user *shmaddr, int shmflg, unsigned long *addr,
  34              unsigned long shmlba);
  35extern int is_file_shm_hugepages(struct file *file);
  36extern void exit_shm(struct task_struct *task);
  37#else
  38static inline long do_shmat(int shmid, char __user *shmaddr,
  39                            int shmflg, unsigned long *addr,
  40                            unsigned long shmlba)
  41{
  42        return -ENOSYS;
  43}
  44static inline int is_file_shm_hugepages(struct file *file)
  45{
  46        return 0;
  47}
  48static inline void exit_shm(struct task_struct *task)
  49{
  50}
  51#endif
  52
  53#endif /* _LINUX_SHM_H_ */
  54