]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/linux/mm_types.h
Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus
[karo-tx-linux.git] / include / linux / mm_types.h
index f8d1492a114f4447d0d7f4dfd8136e854a4a7581..d3ebb9d21a5334d26e85bc865d318535f5864569 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 {
@@ -81,20 +84,9 @@ struct page {
 
                                union {
                                        /*
-                                        * Count of ptes mapped in
-                                        * mms, to show when page is
-                                        * mapped & limit reverse map
-                                        * searches.
-                                        *
-                                        * Used also for tail pages
-                                        * refcounting instead of
-                                        * _count. Tail pages cannot
-                                        * be mapped and keeping the
-                                        * tail page _count zero at
-                                        * all times guarantees
-                                        * get_page_unless_zero() will
-                                        * never succeed on tail
-                                        * pages.
+                                        * Count of ptes mapped in mms, to show
+                                        * when page is mapped & limit reverse
+                                        * map searches.
                                         */
                                        atomic_t _mapcount;
 
@@ -124,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
@@ -369,9 +366,10 @@ struct core_state {
 };
 
 enum {
-       MM_FILEPAGES,
-       MM_ANONPAGES,
-       MM_SWAPENTS,
+       MM_FILEPAGES,   /* Resident file mapping pages */
+       MM_ANONPAGES,   /* Resident anonymous pages */
+       MM_SWAPENTS,    /* Anonymous swap entries */
+       MM_SHMEMPAGES,  /* Resident shared memory pages */
        NR_MM_COUNTERS
 };
 
@@ -426,7 +424,7 @@ 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 shared_vm;        /* Shared pages (files) */
+       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 def_flags;