Loading include/linux/mm_types.h +16 −8 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ struct page { /* First double word block */ unsigned long flags; /* Atomic flags, some possibly * updated asynchronously */ union { struct address_space *mapping; /* If low bit clear, points to * inode address_space, or NULL. * If page mapped as anonymous Loading @@ -49,11 +50,14 @@ struct page { * it points to anon_vma object: * see PAGE_MAPPING_ANON below. */ void *s_mem; /* slab first object */ }; /* Second double word */ struct { union { pgoff_t index; /* Our offset within mapping. */ void *freelist; /* slub/slob first free object */ void *freelist; /* sl[aou]b first free object */ bool pfmemalloc; /* If set by the page allocator, * ALLOC_NO_WATERMARKS was set * and the low watermark was not Loading Loading @@ -109,6 +113,7 @@ struct page { }; atomic_t _count; /* Usage count, see below. */ }; unsigned int active; /* SLAB */ }; }; Loading @@ -130,6 +135,9 @@ struct page { struct list_head list; /* slobs list of pages */ struct slab *slab_page; /* slab fields */ struct rcu_head rcu_head; /* Used by SLAB * when destroying via RCU */ }; /* Remainder is not double word aligned */ Loading include/linux/slab.h +8 −1 Original line number Diff line number Diff line Loading @@ -51,7 +51,14 @@ * } * rcu_read_unlock(); * * See also the comment on struct slab_rcu in mm/slab.c. * This is useful if we need to approach a kernel structure obliquely, * from its address obtained without the usual locking. We can lock * the structure to stabilize it and check it's still at the given address, * only if we can be sure that the memory has not been meanwhile reused * for some other kind of object (which our subsystem's lock might corrupt). * * rcu_read_lock before reading the address, then rcu_read_unlock after * taking the spinlock within the structure expected at that address. */ #define SLAB_DESTROY_BY_RCU 0x00080000UL /* Defer freeing slabs to RCU */ #define SLAB_MEM_SPREAD 0x00100000UL /* Spread some memory over cpuset */ Loading include/linux/slab_def.h +2 −2 Original line number Diff line number Diff line Loading @@ -41,8 +41,8 @@ struct kmem_cache { size_t colour; /* cache colouring range */ unsigned int colour_off; /* colour offset */ struct kmem_cache *slabp_cache; unsigned int slab_size; struct kmem_cache *freelist_cache; unsigned int freelist_size; /* constructor func */ void (*ctor)(void *obj); Loading Loading
include/linux/mm_types.h +16 −8 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ struct page { /* First double word block */ unsigned long flags; /* Atomic flags, some possibly * updated asynchronously */ union { struct address_space *mapping; /* If low bit clear, points to * inode address_space, or NULL. * If page mapped as anonymous Loading @@ -49,11 +50,14 @@ struct page { * it points to anon_vma object: * see PAGE_MAPPING_ANON below. */ void *s_mem; /* slab first object */ }; /* Second double word */ struct { union { pgoff_t index; /* Our offset within mapping. */ void *freelist; /* slub/slob first free object */ void *freelist; /* sl[aou]b first free object */ bool pfmemalloc; /* If set by the page allocator, * ALLOC_NO_WATERMARKS was set * and the low watermark was not Loading Loading @@ -109,6 +113,7 @@ struct page { }; atomic_t _count; /* Usage count, see below. */ }; unsigned int active; /* SLAB */ }; }; Loading @@ -130,6 +135,9 @@ struct page { struct list_head list; /* slobs list of pages */ struct slab *slab_page; /* slab fields */ struct rcu_head rcu_head; /* Used by SLAB * when destroying via RCU */ }; /* Remainder is not double word aligned */ Loading
include/linux/slab.h +8 −1 Original line number Diff line number Diff line Loading @@ -51,7 +51,14 @@ * } * rcu_read_unlock(); * * See also the comment on struct slab_rcu in mm/slab.c. * This is useful if we need to approach a kernel structure obliquely, * from its address obtained without the usual locking. We can lock * the structure to stabilize it and check it's still at the given address, * only if we can be sure that the memory has not been meanwhile reused * for some other kind of object (which our subsystem's lock might corrupt). * * rcu_read_lock before reading the address, then rcu_read_unlock after * taking the spinlock within the structure expected at that address. */ #define SLAB_DESTROY_BY_RCU 0x00080000UL /* Defer freeing slabs to RCU */ #define SLAB_MEM_SPREAD 0x00100000UL /* Spread some memory over cpuset */ Loading
include/linux/slab_def.h +2 −2 Original line number Diff line number Diff line Loading @@ -41,8 +41,8 @@ struct kmem_cache { size_t colour; /* cache colouring range */ unsigned int colour_off; /* colour offset */ struct kmem_cache *slabp_cache; unsigned int slab_size; struct kmem_cache *freelist_cache; unsigned int freelist_size; /* constructor func */ void (*ctor)(void *obj); Loading