*参照元 [#j0212e4c]
#backlinks

*説明 [#qc679d4e]
-パス: [[linux-2.6.33/include/linux/mm_types.h]]

-FIXME: これは何?
--説明


**参考 [#p33d180b]


*実装 [#e9d83a56]
 struct mm_struct {
 	struct vm_area_struct * mmap;		/* list of VMAs */
-
--[[linux-2.6.33/vm_area_struct]]

 	struct rb_root mm_rb;
-
--[[linux-2.6.33/rb_root]]

 	struct vm_area_struct * mmap_cache;	/* last find_vma result */
 #ifdef CONFIG_MMU
-
--[[linux-2.6.33/CONFIG_MMU]]

 	unsigned long (*get_unmapped_area) (struct file *filp,
 				unsigned long addr, unsigned long len,
 				unsigned long pgoff, unsigned long flags);
-
--[[linux-2.6.33/file]]

 	void (*unmap_area) (struct mm_struct *mm, unsigned long addr);
 #endif
 	unsigned long mmap_base;		/* base of mmap area */
 	unsigned long task_size;		/* size of task vm space */
 	unsigned long cached_hole_size; 	/* if non-zero, the largest hole below free_area_cache */
 	unsigned long free_area_cache;		/* first hole of size cached_hole_size or larger */
 	pgd_t * pgd;
-
--[[linux-2.6.33/pgd_t]]

 	atomic_t mm_users;			/* How many users with user space? */
 	atomic_t mm_count;			/* How many references to "struct mm_struct" (users count as 1) */
-
--[[linux-2.6.33/atomic_t]]

 	int map_count;				/* number of VMAs */
 	struct rw_semaphore mmap_sem;
-
--[[linux-2.6.33/rw_semaphore]]

 	spinlock_t page_table_lock;		/* Protects page tables and some counters */
 
-
--[[linux-2.6.33/spinlock_t]]

 	struct list_head mmlist;		/* List of maybe swapped mm's.	These are globally strung
 						 * together off init_mm.mmlist, and are protected
 						 * by mmlist_lock
 						 */
 
-
--[[linux-2.6.33/list_head]]

 	/* Special counters, in some configurations protected by the
 	 * page_table_lock, in other configurations by being atomic.
 	 */
 	mm_counter_t _file_rss;
 	mm_counter_t _anon_rss;
 
-
--[[linux-2.6.33/mm_counter_t]]

 	unsigned long hiwater_rss;	/* High-watermark of RSS usage */
 	unsigned long hiwater_vm;	/* High-water virtual memory usage */
 
 	unsigned long total_vm, locked_vm, shared_vm, exec_vm;
 	unsigned long stack_vm, reserved_vm, def_flags, nr_ptes;
 	unsigned long start_code, end_code, start_data, end_data;
 	unsigned long start_brk, brk, start_stack;
 	unsigned long arg_start, arg_end, env_start, env_end;
 
 	unsigned long saved_auxv[AT_VECTOR_SIZE]; /* for /proc/PID/auxv */
 
 	struct linux_binfmt *binfmt;
 
-
--[[linux-2.6.33/linux_binfmt]]

 	cpumask_t cpu_vm_mask;
 
-
--[[linux-2.6.33/cpumask_t]]

 	/* Architecture-specific MM context */
 	mm_context_t context;
 
-
--[[linux-2.6.33/mm_context_t]]

 	/* Swap token stuff */
 	/*
 	 * Last value of global fault stamp as seen by this process.
 	 * In other words, this value gives an indication of how long
 	 * it has been since this task got the token.
 	 * Look at mm/thrash.c
 	 */
 	unsigned int faultstamp;
 	unsigned int token_priority;
 	unsigned int last_interval;
 
 	unsigned long flags; /* Must use atomic bitops to access the bits */
 
 	struct core_state *core_state; /* coredumping support */
 #ifdef CONFIG_AIO
-
--[[linux-2.6.33/CONFIG_AIO]]

 	spinlock_t		ioctx_lock;
 	struct hlist_head	ioctx_list;
-
--[[linux-2.6.33/hlist_head]]

 #endif
 #ifdef CONFIG_MM_OWNER
-
--[[linux-2.6.33/CONFIG_MM_OWNER]]

 	/*
 	 * "owner" points to a task that is regarded as the canonical
 	 * user/owner of this mm. All of the following must be true in
 	 * order for it to be changed:
 	 *
 	 * current == mm->owner
 	 * current->mm != mm
 	 * new_owner->mm == mm
 	 * new_owner->alloc_lock is held
 	 */
 	struct task_struct *owner;
-
--[[linux-2.6.33/task_struct]]

 #endif
 
 #ifdef CONFIG_PROC_FS
-
--[[linux-2.6.33/CONFIG_PROC_FS]]

 	/* store ref to file /proc/<pid>/exe symlink points to */
 	struct file *exe_file;
 	unsigned long num_exe_file_vmas;
 #endif
 #ifdef CONFIG_MMU_NOTIFIER
-
--[[linux-2.6.33/CONFIG_MMU_NOTIFIER]]

 	struct mmu_notifier_mm *mmu_notifier_mm;
-
--[[linux-2.6.33/mmu_notifier_mm]]

 #endif
 };


*コメント [#n416ed55]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS