1 
   2 #include <linux/mm_types.h>
   3 #include <linux/rbtree.h>
   4 #include <linux/rwsem.h>
   5 #include <linux/spinlock.h>
   6 #include <linux/list.h>
   7 #include <linux/cpumask.h>
   8 #include <linux/mman.h>
   9 
  10 #include <linux/atomic.h>
  11 #include <linux/user_namespace.h>
  12 #include <asm/pgtable.h>
  13 #include <asm/mmu.h>
  14 
  15 #ifndef INIT_MM_CONTEXT
  16 #define INIT_MM_CONTEXT(name)
  17 #endif
  18 
  19 
  20 
  21 
  22 
  23 
  24 
  25 
  26 
  27 
  28 
  29 struct mm_struct init_mm = {
  30         .mm_rb          = RB_ROOT,
  31         .pgd            = swapper_pg_dir,
  32         .mm_users       = ATOMIC_INIT(2),
  33         .mm_count       = ATOMIC_INIT(1),
  34         .mmap_sem       = __RWSEM_INITIALIZER(init_mm.mmap_sem),
  35         .page_table_lock =  __SPIN_LOCK_UNLOCKED(init_mm.page_table_lock),
  36         .arg_lock       =  __SPIN_LOCK_UNLOCKED(init_mm.arg_lock),
  37         .mmlist         = LIST_HEAD_INIT(init_mm.mmlist),
  38         .user_ns        = &init_user_ns,
  39         .cpu_bitmap     = CPU_BITS_NONE,
  40         INIT_MM_CONTEXT(init_mm)
  41 };