Initial import
[sliver-openvswitch.git] / datapath / linux-2.4 / compat-2.4 / include / linux / slab.h
1 #ifndef __LINUX_SLAB_WRAPPER_H
2 #define __LINUX_SLAB_WRAPPER_H 1
3
4 /* Kluge to let "struct kmem_cache" work in both 2.4 and 2.6. */
5 #define kmem_cache_s kmem_cache
6
7 #include_next <linux/slab.h>
8
9 static inline void *kzalloc(size_t size, gfp_t flags)
10 {
11         void *p = kmalloc(size, flags);
12         if (p)
13                 memset(p, 0, size);
14         return p;
15 }
16
17 /* Mega-kluge to wrap 2.4 kmem_cache_create for compatibility with 2.6. */
18 #ifdef kmem_cache_create
19 #undef kmem_cache_create
20 #define kmem_cache_create(name, size, align, flags, ctor) \
21         compat_kmem_cache_create(name, size, align, flags, ctor)
22 static inline struct kmem_cache *
23 compat_kmem_cache_create(const char *name, size_t size,
24                          size_t align, unsigned long flags,
25                          void (*ctor)(void *, struct kmem_cache *,
26                                         unsigned long)) 
27 {
28         return (_set_ver(kmem_cache_create))(name, size, align, flags, ctor,
29                                         NULL);
30 }
31 #else
32 #define kmem_cache_create(name, size, align, flags, ctor) \
33         kmem_cache_create(name, size, align, flags, ctor, NULL)
34 #endif /* kmem_cache_create */
35
36 static inline void *kmem_cache_zalloc(struct kmem_cache *k, gfp_t flags)
37 {
38         void *p = kmem_cache_alloc(k, flags);
39         if (p)
40                 memset(p, 0, kmem_cache_size(k));
41         return p;
42 }
43
44 #endif