]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - include/linux/mm_types.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
[mv-sheeva.git] / include / linux / mm_types.h
index bfee0bd1d43545742504225e0ab0754a315e7aa9..02a27ae78539cfe536106f46a8f89b50ea63985e 100644 (file)
@@ -42,7 +42,10 @@ struct page {
                                         * to show when page is mapped
                                         * & limit reverse map searches.
                                         */
-               unsigned int inuse;     /* SLUB: Nr of objects */
+               struct {                /* SLUB */
+                       u16 inuse;
+                       u16 objects;
+               };
        };
        union {
            struct {
@@ -64,10 +67,7 @@ struct page {
 #if NR_CPUS >= CONFIG_SPLIT_PTLOCK_CPUS
            spinlock_t ptl;
 #endif
-           struct {
-                  struct kmem_cache *slab;     /* SLUB: Pointer to slab */
-                  void *end;                   /* SLUB: end marker */
-           };
+           struct kmem_cache *slab;    /* SLUB: Pointer to slab */
            struct page *first_page;    /* Compound tail pages */
        };
        union {
@@ -91,7 +91,7 @@ struct page {
        void *virtual;                  /* Kernel virtual address (NULL if
                                           not kmapped, ie. highmem) */
 #endif /* WANT_PAGE_VIRTUAL */
-#ifdef CONFIG_CGROUP_MEM_CONT
+#ifdef CONFIG_CGROUP_MEM_RES_CTLR
        unsigned long page_cgroup;
 #endif
 };
@@ -175,6 +175,7 @@ struct mm_struct {
        atomic_t mm_users;                      /* How many users with user space? */
        atomic_t mm_count;                      /* How many references to "struct mm_struct" (users count as 1) */
        int map_count;                          /* number of VMAs */
+       int core_waiters;
        struct rw_semaphore mmap_sem;
        spinlock_t page_table_lock;             /* Protects page tables and some counters */
 
@@ -219,14 +220,29 @@ struct mm_struct {
        unsigned long flags; /* Must use atomic bitops to access the bits */
 
        /* coredumping support */
-       int core_waiters;
        struct completion *core_startup_done, core_done;
 
        /* aio bits */
-       rwlock_t                ioctx_list_lock;
+       rwlock_t                ioctx_list_lock;        /* aio lock */
        struct kioctx           *ioctx_list;
-#ifdef CONFIG_CGROUP_MEM_CONT
-       struct mem_cgroup *mem_cgroup;
+#ifdef CONFIG_MM_OWNER
+       /*
+        * "owner" points to a task that is regarded as the canonical
+        * user/owner of this mm. All of the following must be true in
+        * order for it to be changed:
+        *
+        * current == mm->owner
+        * current->mm != mm
+        * new_owner->mm == mm
+        * new_owner->alloc_lock is held
+        */
+       struct task_struct *owner;
+#endif
+
+#ifdef CONFIG_PROC_FS
+       /* store ref to file /proc/<pid>/exe symlink points to */
+       struct file *exe_file;
+       unsigned long num_exe_file_vmas;
 #endif
 };