*参照元 [#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]