]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - include/linux/slab.h
slab, slub, slob: add slab_flags_t
[linux.git] / include / linux / slab.h
index af5aa65c7c18c120d9f395aad56d26a18786b7ed..0c4c579f52ed1e1870af1976c47e0dd8019e8825 100644 (file)
  * Flags to pass to kmem_cache_create().
  * The ones marked DEBUG are only valid if CONFIG_DEBUG_SLAB is set.
  */
-#define SLAB_CONSISTENCY_CHECKS        0x00000100UL    /* DEBUG: Perform (expensive) checks on alloc/free */
-#define SLAB_RED_ZONE          0x00000400UL    /* DEBUG: Red zone objs in a cache */
-#define SLAB_POISON            0x00000800UL    /* DEBUG: Poison objects */
-#define SLAB_HWCACHE_ALIGN     0x00002000UL    /* Align objs on cache lines */
-#define SLAB_CACHE_DMA         0x00004000UL    /* Use GFP_DMA memory */
-#define SLAB_STORE_USER                0x00010000UL    /* DEBUG: Store the last owner for bug hunting */
-#define SLAB_PANIC             0x00040000UL    /* Panic if kmem_cache_create() fails */
+/* DEBUG: Perform (expensive) checks on alloc/free */
+#define SLAB_CONSISTENCY_CHECKS        ((slab_flags_t __force)0x00000100UL)
+/* DEBUG: Red zone objs in a cache */
+#define SLAB_RED_ZONE          ((slab_flags_t __force)0x00000400UL)
+/* DEBUG: Poison objects */
+#define SLAB_POISON            ((slab_flags_t __force)0x00000800UL)
+/* Align objs on cache lines */
+#define SLAB_HWCACHE_ALIGN     ((slab_flags_t __force)0x00002000UL)
+/* Use GFP_DMA memory */
+#define SLAB_CACHE_DMA         ((slab_flags_t __force)0x00004000UL)
+/* DEBUG: Store the last owner for bug hunting */
+#define SLAB_STORE_USER                ((slab_flags_t __force)0x00010000UL)
+/* Panic if kmem_cache_create() fails */
+#define SLAB_PANIC             ((slab_flags_t __force)0x00040000UL)
 /*
  * SLAB_TYPESAFE_BY_RCU - **WARNING** READ THIS!
  *
  *
  * Note that SLAB_TYPESAFE_BY_RCU was originally named SLAB_DESTROY_BY_RCU.
  */
-#define SLAB_TYPESAFE_BY_RCU   0x00080000UL    /* Defer freeing slabs to RCU */
-#define SLAB_MEM_SPREAD                0x00100000UL    /* Spread some memory over cpuset */
-#define SLAB_TRACE             0x00200000UL    /* Trace allocations and frees */
+/* Defer freeing slabs to RCU */
+#define SLAB_TYPESAFE_BY_RCU   ((slab_flags_t __force)0x00080000UL)
+/* Spread some memory over cpuset */
+#define SLAB_MEM_SPREAD                ((slab_flags_t __force)0x00100000UL)
+/* Trace allocations and frees */
+#define SLAB_TRACE             ((slab_flags_t __force)0x00200000UL)
 
 /* Flag to prevent checks on free */
 #ifdef CONFIG_DEBUG_OBJECTS
-# define SLAB_DEBUG_OBJECTS    0x00400000UL
+# define SLAB_DEBUG_OBJECTS    ((slab_flags_t __force)0x00400000UL)
 #else
-# define SLAB_DEBUG_OBJECTS    0x00000000UL
+# define SLAB_DEBUG_OBJECTS    ((slab_flags_t __force)0x00000000UL)
 #endif
 
-#define SLAB_NOLEAKTRACE       0x00800000UL    /* Avoid kmemleak tracing */
+/* Avoid kmemleak tracing */
+#define SLAB_NOLEAKTRACE       ((slab_flags_t __force)0x00800000UL)
 
 /* Don't track use of uninitialized memory */
 #ifdef CONFIG_KMEMCHECK
-# define SLAB_NOTRACK          0x01000000UL
+# define SLAB_NOTRACK          ((slab_flags_t __force)0x01000000UL)
 #else
-# define SLAB_NOTRACK          0x00000000UL
+# define SLAB_NOTRACK          ((slab_flags_t __force)0x00000000UL)
 #endif
+/* Fault injection mark */
 #ifdef CONFIG_FAILSLAB
-# define SLAB_FAILSLAB         0x02000000UL    /* Fault injection mark */
+# define SLAB_FAILSLAB         ((slab_flags_t __force)0x02000000UL)
 #else
-# define SLAB_FAILSLAB         0x00000000UL
+# define SLAB_FAILSLAB         ((slab_flags_t __force)0x00000000UL)
 #endif
+/* Account to memcg */
 #if defined(CONFIG_MEMCG) && !defined(CONFIG_SLOB)
-# define SLAB_ACCOUNT          0x04000000UL    /* Account to memcg */
+# define SLAB_ACCOUNT          ((slab_flags_t __force)0x04000000UL)
 #else
-# define SLAB_ACCOUNT          0x00000000UL
+# define SLAB_ACCOUNT          ((slab_flags_t __force)0x00000000UL)
 #endif
 
 #ifdef CONFIG_KASAN
-#define SLAB_KASAN             0x08000000UL
+#define SLAB_KASAN             ((slab_flags_t __force)0x08000000UL)
 #else
-#define SLAB_KASAN             0x00000000UL
+#define SLAB_KASAN             ((slab_flags_t __force)0x00000000UL)
 #endif
 
 /* The following flags affect the page allocator grouping pages by mobility */
-#define SLAB_RECLAIM_ACCOUNT   0x00020000UL            /* Objects are reclaimable */
+/* Objects are reclaimable */
+#define SLAB_RECLAIM_ACCOUNT   ((slab_flags_t __force)0x00020000UL)
 #define SLAB_TEMPORARY         SLAB_RECLAIM_ACCOUNT    /* Objects are short-lived */
 /*
  * ZERO_SIZE_PTR will be returned for zero sized kmalloc requests.
@@ -128,7 +142,7 @@ void __init kmem_cache_init(void);
 bool slab_is_available(void);
 
 struct kmem_cache *kmem_cache_create(const char *, size_t, size_t,
-                       unsigned long,
+                       slab_flags_t,
                        void (*)(void *));
 void kmem_cache_destroy(struct kmem_cache *);
 int kmem_cache_shrink(struct kmem_cache *);