linux/include/linux/mman.h
<<
>>
Prefs
   1#ifndef _LINUX_MMAN_H
   2#define _LINUX_MMAN_H
   3
   4#include <linux/config.h>
   5#include <linux/mm.h>
   6
   7#include <asm/atomic.h>
   8#include <asm/mman.h>
   9
  10#define MREMAP_MAYMOVE  1
  11#define MREMAP_FIXED    2
  12
  13#define OVERCOMMIT_GUESS                0
  14#define OVERCOMMIT_ALWAYS               1
  15#define OVERCOMMIT_NEVER                2
  16extern int sysctl_overcommit_memory;
  17extern int sysctl_overcommit_ratio;
  18extern atomic_t vm_committed_space;
  19
  20#ifdef CONFIG_SMP
  21extern void vm_acct_memory(long pages);
  22#else
  23static inline void vm_acct_memory(long pages)
  24{
  25        atomic_add(pages, &vm_committed_space);
  26}
  27#endif
  28
  29static inline void vm_unacct_memory(long pages)
  30{
  31        vm_acct_memory(-pages);
  32}
  33
  34/*
  35 * Optimisation macro.  It is equivalent to:
  36 *      (x & bit1) ? bit2 : 0
  37 * but this version is faster.
  38 * ("bit1" and "bit2" must be single bits)
  39 */
  40#define _calc_vm_trans(x, bit1, bit2) \
  41  ((bit1) <= (bit2) ? ((x) & (bit1)) * ((bit2) / (bit1)) \
  42   : ((x) & (bit1)) / ((bit1) / (bit2)))
  43
  44/*
  45 * Combine the mmap "prot" argument into "vm_flags" used internally.
  46 */
  47static inline unsigned long
  48calc_vm_prot_bits(unsigned long prot)
  49{
  50        return _calc_vm_trans(prot, PROT_READ,  VM_READ ) |
  51               _calc_vm_trans(prot, PROT_WRITE, VM_WRITE) |
  52               _calc_vm_trans(prot, PROT_EXEC,  VM_EXEC );
  53}
  54
  55/*
  56 * Combine the mmap "flags" argument into "vm_flags" used internally.
  57 */
  58static inline unsigned long
  59calc_vm_flag_bits(unsigned long flags)
  60{
  61        return _calc_vm_trans(flags, MAP_GROWSDOWN,  VM_GROWSDOWN ) |
  62               _calc_vm_trans(flags, MAP_DENYWRITE,  VM_DENYWRITE ) |
  63               _calc_vm_trans(flags, MAP_EXECUTABLE, VM_EXECUTABLE) |
  64               _calc_vm_trans(flags, MAP_LOCKED,     VM_LOCKED    );
  65}
  66
  67#endif /* _LINUX_MMAN_H */
  68
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.