]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - include/linux/mm_types.h
mm: polish virtual memory accounting
[mirror_ubuntu-artful-kernel.git] / include / linux / mm_types.h
index faf6fe88d6b3177add09d7afc9da4bd37fdc0c47..624b78b848b89fae506faa1f4f48ce86297ceace 100644 (file)
@@ -54,6 +54,8 @@ struct page {
                                                 * see PAGE_MAPPING_ANON below.
                                                 */
                void *s_mem;                    /* slab first object */
+               atomic_t compound_mapcount;     /* first tail page */
+               /* page_deferred_list().next     -- second tail page */
        };
 
        /* Second double word */
@@ -61,6 +63,7 @@ struct page {
                union {
                        pgoff_t index;          /* Our offset within mapping. */
                        void *freelist;         /* sl[aou]b first free object */
+                       /* page_deferred_list().prev    -- second tail page */
                };
 
                union {
@@ -113,6 +116,11 @@ struct page {
                                         * Can be used as a generic list
                                         * by the page owner.
                                         */
+               struct dev_pagemap *pgmap; /* ZONE_DEVICE pages are never on an
+                                           * lru or handled by a slab
+                                           * allocator, this points to the
+                                           * hosting device page map.
+                                           */
                struct {                /* slub per cpu partial pages */
                        struct page *next;      /* Next partial slab */
 #ifdef CONFIG_64BIT
@@ -416,9 +424,9 @@ struct mm_struct {
        unsigned long total_vm;         /* Total pages mapped */
        unsigned long locked_vm;        /* Pages that have PG_mlocked set */
        unsigned long pinned_vm;        /* Refcount permanently increased */
-       unsigned long data_vm;          /* VM_WRITE & ~VM_SHARED/GROWSDOWN */
-       unsigned long exec_vm;          /* VM_EXEC & ~VM_WRITE */
-       unsigned long stack_vm;         /* VM_GROWSUP/DOWN */
+       unsigned long data_vm;          /* VM_WRITE & ~VM_SHARED & ~VM_STACK */
+       unsigned long exec_vm;          /* VM_EXEC & ~VM_WRITE & ~VM_STACK */
+       unsigned long stack_vm;         /* VM_STACK */
        unsigned long def_flags;
        unsigned long start_code, end_code, start_data, end_data;
        unsigned long start_brk, brk, start_stack;