linux-4.4.1/page
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#n88d602c]
#backlinks
*説明 [#j13b4430]
-パス: [[linux-4.4.1/include/linux/mm_types.h]]
-FIXME: これは何?
--説明
**参考 [#wa5fac1f]
*実装 [#vb49edd3]
/*
* Each physical page in the system has a struct page as...
* it to keep track of whatever it is we are using the p...
* moment. Note that we have no way to track which tasks...
* a page, though if it is a pagecache page, rmap struct...
* who is mapping it.
*
* The objects in struct page are organized in double wo...
* order to allows us to use atomic double word operatio...
* of struct page. That is currently only used by slub b...
* allows the use of atomic double word operations on th...
* and lru list pointers also.
*/
struct page {
/* First double word block */
unsigned long flags; /* Atomic flags,...
* updated async...
union {
struct address_space *mapping; /* If lo...
* inode...
* If pa...
* memor...
* it po...
* see P...
*/
void *s_mem; /* slab ...
};
-
--[[linux-4.4.1/address_space]]
/* Second double word */
struct {
union {
pgoff_t index; /* Our o...
void *freelist; /* sl[ao...
};
-
--[[linux-4.4.1/pgoff_t]]
union {
#if defined(CONFIG_HAVE_CMPXCHG_DOUBLE) && \
defined(CONFIG_HAVE_ALIGNED_STRUCT_PAGE)
-
--[[linux-4.4.1/CONFIG_HAVE_CMPXCHG_DOUBLE]]
--[[linux-4.4.1/CONFIG_HAVE_ALIGNED_STRUCT_PAGE]]
/* Used for cmpxchg_double in sl...
unsigned long counters;
#else
/*
* Keep _count separate from slu...
* As the rest of the double wor...
* slab_lock but _count is not.
*/
unsigned counters;
#endif
struct {
union {
/*
* Count of ptes...
* mms, to show ...
* mapped & limi...
* searches.
*
* Used also for...
* refcounting i...
* _count. Tail ...
* be mapped and...
* tail page _co...
* all times gua...
* get_page_unle...
* never succeed...
* pages.
*/
atomic_t _mapcou...
-
--[[linux-4.4.1/atomic_t]]
struct { /* SLUB...
unsigned...
unsigned...
unsigned...
};
int units; ...
};
atomic_t _count; ...
};
unsigned int active; /* SLAB */
};
};
/*
* Third double word block
*
* WARNING: bit 0 of the first word encode PageT...
* the rest users of the storage space MUST NOT ...
* avoid collision and false-positive PageTail().
*/
union {
struct list_head lru; /* Pageout list,...
* protected by ...
* Can be used a...
* by the page o...
*/
-
--[[linux-4.4.1/list_head]]
struct { /* slub per cpu ...
struct page *next; /* Next ...
#ifdef CONFIG_64BIT
-
--[[linux-4.4.1/CONFIG_64BIT]]
int pages; /* Nr of partial...
int pobjects; /* Approximate #...
#else
short int pages;
short int pobjects;
#endif
};
struct rcu_head rcu_head; /* Used ...
* when ...
*/
-
--[[linux-4.4.1/rcu_head]]
/* Tail pages of compound page */
struct {
unsigned long compound_head; /* ...
/* First tail page only */
#ifdef CONFIG_64BIT
/*
* On 64 bit system we have enou...
* to encode compound_dtor and c...
* unsigned int. It can help com...
* smaller code on some archtect...
*/
unsigned int compound_dtor;
unsigned int compound_order;
#else
unsigned short int compound_dtor;
unsigned short int compound_order;
#endif
};
#if defined(CONFIG_TRANSPARENT_HUGEPAGE) && USE_SPLIT_PM...
-
--[[linux-4.4.1/CONFIG_TRANSPARENT_HUGEPAGE]]
--[[linux-4.4.1/USE_SPLIT_PMD_PTLOCKS]]
struct {
unsigned long __pad; /* do no...
* with ...
* possi...
*/
pgtable_t pmd_huge_pte; /* prote...
};
-
--[[linux-4.4.1/pgtable_t]]
#endif
};
/* Remainder is not double word aligned */
union {
unsigned long private; /* Mappi...
* usual...
* if Pa...
* swp_e...
* indic...
* syste...
*/
#if USE_SPLIT_PTE_PTLOCKS
#if ALLOC_SPLIT_PTLOCKS
-
--[[linux-4.4.1/USE_SPLIT_PTE_PTLOCKS]]
--[[linux-4.4.1/ALLOC_SPLIT_PTLOCKS]]
spinlock_t *ptl;
#else
spinlock_t ptl;
#endif
-
--[[linux-4.4.1/spinlock_t]]
#endif
struct kmem_cache *slab_cache; /* SL[AU...
};
-
--[[linux-4.4.1/kmem_cache]]
#ifdef CONFIG_MEMCG
-
--[[linux-4.4.1/CONFIG_MEMCG]]
struct mem_cgroup *mem_cgroup;
-
--[[linux-4.4.1/mem_cgroup]]
#endif
/*
* On machines where all RAM is mapped into kern...
* we can simply calculate the virtual address. ...
* highmem some memory is mapped into kernel vir...
* dynamically, so we need a place to store that...
* Note that this field could be 16 bits on x86 ...
*
* Architectures with slow multiplication can de...
* WANT_PAGE_VIRTUAL in asm/page.h
*/
#if defined(WANT_PAGE_VIRTUAL)
-
--[[linux-4.4.1/WANT_PAGE_VIRTUAL]]
void *virtual; /* Kernel virtua...
not kmapped, ...
#endif /* WANT_PAGE_VIRTUAL */
#ifdef CONFIG_KMEMCHECK
-
--[[linux-4.4.1/CONFIG_KMEMCHECK]]
/*
* kmemcheck wants to track the status of each b...
* is a pointer to such a status block. NULL if ...
*/
void *shadow;
#endif
#ifdef LAST_CPUPID_NOT_IN_PAGE_FLAGS
-
--[[linux-4.4.1/LAST_CPUPID_NOT_IN_PAGE_FLAGS]]
int _last_cpupid;
#endif
}
/*
* The struct page can be forced to be double word align...
* on double words work. The SLUB allocator can make use...
*/
#ifdef CONFIG_HAVE_ALIGNED_STRUCT_PAGE
-
--[[linux-4.4.1/CONFIG_HAVE_ALIGNED_STRUCT_PAGE]]
__aligned(2 * sizeof(unsigned long))
-
--[[linux-4.4.1/__aligned()]]
#endif
;
*コメント [#k45df037]
終了行:
*参照元 [#n88d602c]
#backlinks
*説明 [#j13b4430]
-パス: [[linux-4.4.1/include/linux/mm_types.h]]
-FIXME: これは何?
--説明
**参考 [#wa5fac1f]
*実装 [#vb49edd3]
/*
* Each physical page in the system has a struct page as...
* it to keep track of whatever it is we are using the p...
* moment. Note that we have no way to track which tasks...
* a page, though if it is a pagecache page, rmap struct...
* who is mapping it.
*
* The objects in struct page are organized in double wo...
* order to allows us to use atomic double word operatio...
* of struct page. That is currently only used by slub b...
* allows the use of atomic double word operations on th...
* and lru list pointers also.
*/
struct page {
/* First double word block */
unsigned long flags; /* Atomic flags,...
* updated async...
union {
struct address_space *mapping; /* If lo...
* inode...
* If pa...
* memor...
* it po...
* see P...
*/
void *s_mem; /* slab ...
};
-
--[[linux-4.4.1/address_space]]
/* Second double word */
struct {
union {
pgoff_t index; /* Our o...
void *freelist; /* sl[ao...
};
-
--[[linux-4.4.1/pgoff_t]]
union {
#if defined(CONFIG_HAVE_CMPXCHG_DOUBLE) && \
defined(CONFIG_HAVE_ALIGNED_STRUCT_PAGE)
-
--[[linux-4.4.1/CONFIG_HAVE_CMPXCHG_DOUBLE]]
--[[linux-4.4.1/CONFIG_HAVE_ALIGNED_STRUCT_PAGE]]
/* Used for cmpxchg_double in sl...
unsigned long counters;
#else
/*
* Keep _count separate from slu...
* As the rest of the double wor...
* slab_lock but _count is not.
*/
unsigned counters;
#endif
struct {
union {
/*
* Count of ptes...
* mms, to show ...
* mapped & limi...
* searches.
*
* Used also for...
* refcounting i...
* _count. Tail ...
* be mapped and...
* tail page _co...
* all times gua...
* get_page_unle...
* never succeed...
* pages.
*/
atomic_t _mapcou...
-
--[[linux-4.4.1/atomic_t]]
struct { /* SLUB...
unsigned...
unsigned...
unsigned...
};
int units; ...
};
atomic_t _count; ...
};
unsigned int active; /* SLAB */
};
};
/*
* Third double word block
*
* WARNING: bit 0 of the first word encode PageT...
* the rest users of the storage space MUST NOT ...
* avoid collision and false-positive PageTail().
*/
union {
struct list_head lru; /* Pageout list,...
* protected by ...
* Can be used a...
* by the page o...
*/
-
--[[linux-4.4.1/list_head]]
struct { /* slub per cpu ...
struct page *next; /* Next ...
#ifdef CONFIG_64BIT
-
--[[linux-4.4.1/CONFIG_64BIT]]
int pages; /* Nr of partial...
int pobjects; /* Approximate #...
#else
short int pages;
short int pobjects;
#endif
};
struct rcu_head rcu_head; /* Used ...
* when ...
*/
-
--[[linux-4.4.1/rcu_head]]
/* Tail pages of compound page */
struct {
unsigned long compound_head; /* ...
/* First tail page only */
#ifdef CONFIG_64BIT
/*
* On 64 bit system we have enou...
* to encode compound_dtor and c...
* unsigned int. It can help com...
* smaller code on some archtect...
*/
unsigned int compound_dtor;
unsigned int compound_order;
#else
unsigned short int compound_dtor;
unsigned short int compound_order;
#endif
};
#if defined(CONFIG_TRANSPARENT_HUGEPAGE) && USE_SPLIT_PM...
-
--[[linux-4.4.1/CONFIG_TRANSPARENT_HUGEPAGE]]
--[[linux-4.4.1/USE_SPLIT_PMD_PTLOCKS]]
struct {
unsigned long __pad; /* do no...
* with ...
* possi...
*/
pgtable_t pmd_huge_pte; /* prote...
};
-
--[[linux-4.4.1/pgtable_t]]
#endif
};
/* Remainder is not double word aligned */
union {
unsigned long private; /* Mappi...
* usual...
* if Pa...
* swp_e...
* indic...
* syste...
*/
#if USE_SPLIT_PTE_PTLOCKS
#if ALLOC_SPLIT_PTLOCKS
-
--[[linux-4.4.1/USE_SPLIT_PTE_PTLOCKS]]
--[[linux-4.4.1/ALLOC_SPLIT_PTLOCKS]]
spinlock_t *ptl;
#else
spinlock_t ptl;
#endif
-
--[[linux-4.4.1/spinlock_t]]
#endif
struct kmem_cache *slab_cache; /* SL[AU...
};
-
--[[linux-4.4.1/kmem_cache]]
#ifdef CONFIG_MEMCG
-
--[[linux-4.4.1/CONFIG_MEMCG]]
struct mem_cgroup *mem_cgroup;
-
--[[linux-4.4.1/mem_cgroup]]
#endif
/*
* On machines where all RAM is mapped into kern...
* we can simply calculate the virtual address. ...
* highmem some memory is mapped into kernel vir...
* dynamically, so we need a place to store that...
* Note that this field could be 16 bits on x86 ...
*
* Architectures with slow multiplication can de...
* WANT_PAGE_VIRTUAL in asm/page.h
*/
#if defined(WANT_PAGE_VIRTUAL)
-
--[[linux-4.4.1/WANT_PAGE_VIRTUAL]]
void *virtual; /* Kernel virtua...
not kmapped, ...
#endif /* WANT_PAGE_VIRTUAL */
#ifdef CONFIG_KMEMCHECK
-
--[[linux-4.4.1/CONFIG_KMEMCHECK]]
/*
* kmemcheck wants to track the status of each b...
* is a pointer to such a status block. NULL if ...
*/
void *shadow;
#endif
#ifdef LAST_CPUPID_NOT_IN_PAGE_FLAGS
-
--[[linux-4.4.1/LAST_CPUPID_NOT_IN_PAGE_FLAGS]]
int _last_cpupid;
#endif
}
/*
* The struct page can be forced to be double word align...
* on double words work. The SLUB allocator can make use...
*/
#ifdef CONFIG_HAVE_ALIGNED_STRUCT_PAGE
-
--[[linux-4.4.1/CONFIG_HAVE_ALIGNED_STRUCT_PAGE]]
__aligned(2 * sizeof(unsigned long))
-
--[[linux-4.4.1/__aligned()]]
#endif
;
*コメント [#k45df037]
ページ名: