source: GPL/include/linux/slab.h@ 18

Last change on this file since 18 was 18, checked in by vladest, 20 years ago

initial import

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