source: GPL/trunk/include/linux/slab.h@ 442

Last change on this file since 442 was 442, checked in by Paul Smedley, 16 years ago

Reorganise code to make maintenance easier

File size: 2.4 KB
Line 
1/*
2 * linux/mm/slab.h
3 * Written by Mark Hemment, 1996.
4 * (markhe@nextd.demon.co.uk)
5 */
6
7#include <linux/types.h>
8
9#if !defined(_LINUX_SLAB_H)
10#define _LINUX_SLAB_H
11
12#if defined(__KERNEL__)
13
14typedef struct kmem_cache_s kmem_cache_t;
15
16/* flags for kmem_cache_alloc() */
17#define SLAB_BUFFER GFP_BUFFER
18#define SLAB_ATOMIC GFP_ATOMIC
19#define SLAB_USER GFP_USER
20#define SLAB_KERNEL GFP_KERNEL
21#define SLAB_NFS GFP_NFS
22#define SLAB_DMA GFP_DMA
23
24#define SLAB_LEVEL_MASK 0x0000007fUL
25#define SLAB_NO_GROW 0x00001000UL /* don't grow a cache */
26
27/* flags to pass to kmem_cache_create().
28 * The first 3 are only valid when the allocator as been build
29 * SLAB_DEBUG_SUPPORT.
30 */
31#define SLAB_DEBUG_FREE 0x00000100UL /* Peform (expensive) checks on free */
32#define SLAB_DEBUG_INITIAL 0x00000200UL /* Call constructor (as verifier) */
33#define SLAB_RED_ZONE 0x00000400UL /* Red zone objs in a cache */
34#define SLAB_POISON 0x00000800UL /* Poison objects */
35#define SLAB_NO_REAP 0x00001000UL /* never reap from the cache */
36#define SLAB_HWCACHE_ALIGN 0x00002000UL /* align objs on a h/w cache lines */
37#if 0
38#define SLAB_HIGH_PACK 0x00004000UL /* XXX */
39#endif
40
41/* flags passed to a constructor func */
42#define SLAB_CTOR_CONSTRUCTOR 0x001UL /* if not set, then deconstructor */
43#define SLAB_CTOR_ATOMIC 0x002UL /* tell constructor it can't sleep */
44#define SLAB_CTOR_VERIFY 0x004UL /* tell constructor it's a verify call */
45
46#endif /* __KERNEL__ */
47
48//NOTE: enabling this in the non-KEE driver causes problems (file name strings
49// put in seperate private segments)
50#ifdef DEBUGHEAP
51extern void near *__kmalloc(int, int, const char *filename, int lineno);
52extern void __kfree(const void near *, const char *filename, int lineno);
53
54#define kmalloc(a,b) __kmalloc(a,b, __FILE__, __LINE__)
55#define kfree(a) __kfree(a, __FILE__, __LINE__)
56#define kfree_s(a,b) __kfree(a, __FILE__, __LINE__)
57#define kfree_nocheck(a) __kfree(a, __FILE__, __LINE__)
58
59#else
60extern void near *__kmalloc(int, int);
61extern void __kfree(const void near *);
62
63#define kmalloc(a,b) __kmalloc(a,b)
64#define kfree(a) __kfree(a)
65
66#define kfree_s(a,b) kfree(a)
67#define kfree_nocheck(a) kfree(a)
68#endif
69
70void *kzalloc(size_t n, gfp_t gfp_flags);
71void *kcalloc(size_t n, size_t size, unsigned int __nocast gfp_flags);
72
73#endif /* _LINUX_SLAB_H */
Note: See TracBrowser for help on using the repository browser.