Files
openflow/datapath/linux-2.4/compat-2.4/include/linux/slab.h
T
2008-03-04 13:12:53 -08:00

45 lines
1.2 KiB
C

#ifndef __LINUX_SLAB_WRAPPER_H
#define __LINUX_SLAB_WRAPPER_H 1
/* Kluge to let "struct kmem_cache" work in both 2.4 and 2.6. */
#define kmem_cache_s kmem_cache
#include_next <linux/slab.h>
static inline void *kzalloc(size_t size, gfp_t flags)
{
void *p = kmalloc(size, flags);
if (p)
memset(p, 0, size);
return p;
}
/* Mega-kluge to wrap 2.4 kmem_cache_create for compatibility with 2.6. */
#ifdef kmem_cache_create
#undef kmem_cache_create
#define kmem_cache_create(name, size, align, flags, ctor) \
compat_kmem_cache_create(name, size, align, flags, ctor)
static inline struct kmem_cache *
compat_kmem_cache_create(const char *name, size_t size,
size_t align, unsigned long flags,
void (*ctor)(void *, struct kmem_cache *,
unsigned long))
{
return (_set_ver(kmem_cache_create))(name, size, align, flags, ctor,
NULL);
}
#else
#define kmem_cache_create(name, size, align, flags, ctor) \
kmem_cache_create(name, size, align, flags, ctor, NULL)
#endif /* kmem_cache_create */
static inline void *kmem_cache_zalloc(struct kmem_cache *k, gfp_t flags)
{
void *p = kmem_cache_alloc(k, flags);
if (p)
memset(p, 0, kmem_cache_size(k));
return p;
}
#endif