| 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 |  | 
|---|
| 14 | typedef 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 | 
|---|
| 51 | extern void near *__kmalloc(int, int, const char *filename, int lineno); | 
|---|
| 52 | extern 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 | 
|---|
| 60 | extern void near *__kmalloc(int, int); | 
|---|
| 61 | extern 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 |  | 
|---|
| 70 | void *kzalloc(size_t n, gfp_t gfp_flags); | 
|---|
| 71 | void *kcalloc(size_t n, size_t size, unsigned int __nocast gfp_flags); | 
|---|
| 72 |  | 
|---|
| 73 | #endif  /* _LINUX_SLAB_H */ | 
|---|