*参照元 [#zd477076]
#backlinks

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

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


**参考 [#ja9be71d]


*実装 [#k2824ad6]
 /*
  * Each physical page in the system has a struct page associated with
  * it to keep track of whatever it is we are using the page for at the
  * moment. Note that we have no way to track which tasks are using
  * a page, though if it is a pagecache page, rmap structures can tell us
  * who is mapping it.
  */
 struct page {
 	unsigned long flags;		/* Atomic flags, some possibly
 					 * updated asynchronously */
 	atomic_t _count;		/* Usage count, see below. */
-
--[[linux-2.6.33/]]
--[[linux-2.6.33/atomic_t]]

 	union {
 		atomic_t _mapcount;	/* Count of ptes mapped in mms,
 					 * to show when page is mapped
 					 * & limit reverse map searches.
 					 */
 		struct {		/* SLUB */
 			u16 inuse;
 			u16 objects;
 		};
 	};
 	union {
 	    struct {
 		unsigned long private;		/* Mapping-private opaque data:
 					 	 * usually used for buffer_heads
 						 * if PagePrivate set; used for
 						 * swp_entry_t if PageSwapCache;
 						 * indicates order in the buddy
 						 * system if PG_buddy is set.
 						 */
 		struct address_space *mapping;	/* If low bit clear, points to
 						 * inode address_space, or NULL.
 						 * If page mapped as anonymous
 						 * memory, low bit is set, and
 						 * it points to anon_vma object:
 						 * see PAGE_MAPPING_ANON below.
 						 */
-
--[[linux-2.6.33/]]
--[[linux-2.6.33/address_space]]

 	    };
 #if USE_SPLIT_PTLOCKS
-
--[[linux-2.6.33/USE_SPLIT_PTLOCKS]]

 	    spinlock_t ptl;
-
--[[linux-2.6.33/]]
--[[linux-2.6.33/spinlock_t]]

 #endif
 	    struct kmem_cache *slab;	/* SLUB: Pointer to slab */
-
--[[linux-2.6.33/]]
--[[linux-2.6.33/kmem_cache]]

 	    struct page *first_page;	/* Compound tail pages */
-
--[[linux-2.6.33/]]
--[[linux-2.6.33/page]]

 	};
 	union {
 		pgoff_t index;		/* Our offset within mapping. */
 		void *freelist;		/* SLUB: freelist req. slab lock */
 	};
-
--[[linux-2.6.33/pgoff_t]]

 	struct list_head lru;		/* Pageout list, eg. active_list
 					 * protected by zone->lru_lock !
 					 */
-
--[[linux-2.6.33/]]
--[[linux-2.6.33/list_head]]

 	/*
 	 * On machines where all RAM is mapped into kernel address space,
 	 * we can simply calculate the virtual address. On machines with
 	 * highmem some memory is mapped into kernel virtual memory
 	 * dynamically, so we need a place to store that address.
 	 * Note that this field could be 16 bits on x86 ... ;)
 	 *
 	 * Architectures with slow multiplication can define
 	 * WANT_PAGE_VIRTUAL in asm/page.h
 	 */
 #if defined(WANT_PAGE_VIRTUAL)
-
--[[linux-2.6.33/WANT_PAGE_VIRTUAL]]

 	void *virtual;			/* Kernel virtual address (NULL if
 					   not kmapped, ie. highmem) */
 #endif /* WANT_PAGE_VIRTUAL */
 #ifdef CONFIG_WANT_PAGE_DEBUG_FLAGS
-
--[[linux-2.6.33/CONFIG_WANT_PAGE_DEBUG_FLAGS]]

 	unsigned long debug_flags;	/* Use atomic bitops on this */
 #endif
 
 #ifdef CONFIG_KMEMCHECK
-
--[[linux-2.6.33/CONFIG_KMEMCHECK]]

 	/*
 	 * kmemcheck wants to track the status of each byte in a page; this
 	 * is a pointer to such a status block. NULL if not tracked.
 	 */
 	void *shadow;
 #endif
 };


*コメント [#sa12ecea]

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