patch-2.1.38 linux/include/linux/slab.h

Next file: linux/include/linux/socket.h
Previous file: linux/include/linux/skbuff.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.37/linux/include/linux/slab.h linux/include/linux/slab.h
@@ -12,6 +12,7 @@
 typedef struct kmem_cache_s kmem_cache_t;
 
 #include	<linux/mm.h>
+#include	<asm/cache.h>
 
 /* flags for kmem_cache_alloc() */
 #define	SLAB_BUFFER		GFP_BUFFER	/* 0x00 */
@@ -22,39 +23,48 @@
 #define	SLAB_NFS		GFP_NFS		/* 0x05 */
 #define	SLAB_DMA		GFP_DMA		/* 0x08 */
 #define	SLAB_LEVEL_MASK		GFP_LEVEL_MASK	/* 0x0f */
-#define	SLAB_NO_GROW		0x00001000UL	/* don't add another slab during an alloc */
+#define	SLAB_NO_GROW		0x00001000UL	/* don't grow a cache */
 
 /* flags to pass to kmem_cache_create().
- * The first 3 are only valid when the allocator has been build
+ * The first 3 are only valid when the allocator as been build
  * SLAB_DEBUG_SUPPORT.
  */
-#define	SLAB_DEBUG_FREE		0x00000100UL	/* Peform time consuming ptr checks on free */
-#define	SLAB_DEBUG_INITIAL	0x00000200UL	/* Call constructor, on release, to conform state */
+#define	SLAB_DEBUG_FREE		0x00000100UL	/* Peform (expensive) checks on free */
+#define	SLAB_DEBUG_INITIAL	0x00000200UL	/* Call constructor (as verifier) */
 #define	SLAB_RED_ZONE		0x00000400UL	/* Red zone objs in a cache */
-#define	SLAB_HWCACHE_ALIGN	0x00000800UL	/* align objs on an hw cache line */
+#define	SLAB_POISION		0x00000800UL	/* Poision objects */
+#define	SLAB_NO_REAP		0x00001000UL	/* never reap from the cache */
+#define	SLAB_HWCACHE_ALIGN	0x00002000UL	/* align objs on a h/w cache lines */
+#if	0
+#define	SLAB_HIGH_PACK		0x00004000UL	/* XXX */
+#endif
 
 /* flags passed to a constructor func */
 #define	SLAB_CTOR_CONSTRUCTOR	0x001UL		/* if not set, then deconstructor */
 #define SLAB_CTOR_ATOMIC	0x002UL		/* tell constructor it can't sleep */
-#define	SLAB_DTOR_ATOMIC	0x002UL		/* tell deconstructor it can't sleep */
 #define	SLAB_CTOR_VERIFY	0x004UL		/* tell constructor it's a verify call */
 
 /* prototypes */
 extern long kmem_cache_init(long, long);
 extern void kmem_cache_sizes_init(void);
-extern struct kmem_cache_s *kmem_cache_create(const char *, unsigned long, unsigned long, unsigned long, void (*)(void *, int, unsigned long), void (*)(void *, int, unsigned long));
-extern int kmem_cache_destroy(struct kmem_cache_s *);
-extern int kmem_cache_shrink(struct kmem_cache_s *, int);
-extern void *kmem_cache_alloc(struct kmem_cache_s *, unsigned long);
-extern void kmem_cache_free(struct kmem_cache_s *, void *);
-extern void *kmem_alloc(unsigned long, unsigned long);
-extern void kmem_free(void *, unsigned long);
+extern kmem_cache_t *kmem_find_general_cachep(size_t);
+extern kmem_cache_t *kmem_cache_create(const char *, size_t, size_t, unsigned long,
+				       void (*)(void *, kmem_cache_t *, unsigned long),
+				       void (*)(void *, kmem_cache_t *, unsigned long));
+extern int kmem_cache_shrink(kmem_cache_t *);
+extern void *kmem_cache_alloc(kmem_cache_t *, int);
+extern void kmem_cache_free(kmem_cache_t *, void *);
+
+extern void *kmalloc(size_t, int);
+extern void kfree(void *);
+extern void kfree_s(void *, size_t);
+
 extern int kmem_cache_reap(int, int, int);
 extern int get_slabinfo(char *);
 
-/* System wide slabs. */
-extern kmem_cache_t *vm_area_cachep;
-extern kmem_cache_t *mm_cachep;
+/* System wide caches */
+extern kmem_cache_t	*vm_area_cachep;
+extern kmem_cache_t	*mm_cachep;
 
 #endif	/* __KERNEL__ */
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov