This source file includes following definitions.
- vm_acct_memory
- vm_unacct_memory
- arch_validate_prot
- calc_vm_prot_bits
- calc_vm_flag_bits
   1 
   2 #ifndef _LINUX_MMAN_H
   3 #define _LINUX_MMAN_H
   4 
   5 #include <linux/mm.h>
   6 #include <linux/percpu_counter.h>
   7 
   8 #include <linux/atomic.h>
   9 #include <uapi/linux/mman.h>
  10 
  11 
  12 
  13 
  14 
  15 #ifndef MAP_32BIT
  16 #define MAP_32BIT 0
  17 #endif
  18 #ifndef MAP_HUGE_2MB
  19 #define MAP_HUGE_2MB 0
  20 #endif
  21 #ifndef MAP_HUGE_1GB
  22 #define MAP_HUGE_1GB 0
  23 #endif
  24 #ifndef MAP_UNINITIALIZED
  25 #define MAP_UNINITIALIZED 0
  26 #endif
  27 #ifndef MAP_SYNC
  28 #define MAP_SYNC 0
  29 #endif
  30 
  31 
  32 
  33 
  34 
  35 #define LEGACY_MAP_MASK (MAP_SHARED \
  36                 | MAP_PRIVATE \
  37                 | MAP_FIXED \
  38                 | MAP_ANONYMOUS \
  39                 | MAP_DENYWRITE \
  40                 | MAP_EXECUTABLE \
  41                 | MAP_UNINITIALIZED \
  42                 | MAP_GROWSDOWN \
  43                 | MAP_LOCKED \
  44                 | MAP_NORESERVE \
  45                 | MAP_POPULATE \
  46                 | MAP_NONBLOCK \
  47                 | MAP_STACK \
  48                 | MAP_HUGETLB \
  49                 | MAP_32BIT \
  50                 | MAP_HUGE_2MB \
  51                 | MAP_HUGE_1GB)
  52 
  53 extern int sysctl_overcommit_memory;
  54 extern int sysctl_overcommit_ratio;
  55 extern unsigned long sysctl_overcommit_kbytes;
  56 extern struct percpu_counter vm_committed_as;
  57 
  58 #ifdef CONFIG_SMP
  59 extern s32 vm_committed_as_batch;
  60 #else
  61 #define vm_committed_as_batch 0
  62 #endif
  63 
  64 unsigned long vm_memory_committed(void);
  65 
  66 static inline void vm_acct_memory(long pages)
  67 {
  68         percpu_counter_add_batch(&vm_committed_as, pages, vm_committed_as_batch);
  69 }
  70 
  71 static inline void vm_unacct_memory(long pages)
  72 {
  73         vm_acct_memory(-pages);
  74 }
  75 
  76 
  77 
  78 
  79 
  80 #ifndef arch_calc_vm_prot_bits
  81 #define arch_calc_vm_prot_bits(prot, pkey) 0
  82 #endif
  83 
  84 #ifndef arch_vm_get_page_prot
  85 #define arch_vm_get_page_prot(vm_flags) __pgprot(0)
  86 #endif
  87 
  88 #ifndef arch_validate_prot
  89 
  90 
  91 
  92 
  93 
  94 
  95 static inline bool arch_validate_prot(unsigned long prot, unsigned long addr)
  96 {
  97         return (prot & ~(PROT_READ | PROT_WRITE | PROT_EXEC | PROT_SEM)) == 0;
  98 }
  99 #define arch_validate_prot arch_validate_prot
 100 #endif
 101 
 102 
 103 
 104 
 105 
 106 
 107 
 108 #define _calc_vm_trans(x, bit1, bit2) \
 109   ((!(bit1) || !(bit2)) ? 0 : \
 110   ((bit1) <= (bit2) ? ((x) & (bit1)) * ((bit2) / (bit1)) \
 111    : ((x) & (bit1)) / ((bit1) / (bit2))))
 112 
 113 
 114 
 115 
 116 static inline unsigned long
 117 calc_vm_prot_bits(unsigned long prot, unsigned long pkey)
 118 {
 119         return _calc_vm_trans(prot, PROT_READ,  VM_READ ) |
 120                _calc_vm_trans(prot, PROT_WRITE, VM_WRITE) |
 121                _calc_vm_trans(prot, PROT_EXEC,  VM_EXEC) |
 122                arch_calc_vm_prot_bits(prot, pkey);
 123 }
 124 
 125 
 126 
 127 
 128 static inline unsigned long
 129 calc_vm_flag_bits(unsigned long flags)
 130 {
 131         return _calc_vm_trans(flags, MAP_GROWSDOWN,  VM_GROWSDOWN ) |
 132                _calc_vm_trans(flags, MAP_DENYWRITE,  VM_DENYWRITE ) |
 133                _calc_vm_trans(flags, MAP_LOCKED,     VM_LOCKED    ) |
 134                _calc_vm_trans(flags, MAP_SYNC,       VM_SYNC      );
 135 }
 136 
 137 unsigned long vm_commit_limit(void);
 138 #endif