LB_LINUX_TRY_COMPILE([
#include <linux/slab.h>
],[
- struct kmem_cache_s *cachep = NULL;
+ kmem_cache_t *cachep = NULL;
kmem_cache_free(cachep, NULL);
])
EXTRA_KCFLAGS="$tmp_flags"
])
+# 2.6.23 lost dtor argument
+AC_DEFUN([LN_KMEM_CACHE_CREATE_DTOR],
+[AC_MSG_CHECKING([check kmem_cache_create has dtor argument])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/slab.h>
+],[
+ struct kmem_cache_s *cachep = NULL;
+ kmem_cache_create(NULL, 0, 0, 0, NULL, NULL);
+],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_KMEM_CACHE_CREATE_DTOR, 1,
+ [kmem_cache_create has dtor argument])
+],[
+ AC_MSG_RESULT(NO)
+])
+])
#
# LN_PROG_LINUX
# 2.6.21
LN_2ARGS_REGISTER_SYSCTL
LN_KMEM_CACHE_S
+# 2.6.23
+LN_KMEM_CACHE_CREATE_DTOR
])
#
#include <linux/proc_fs.h>
#include <linux/mm.h>
#include <linux/timer.h>
+#include <linux/signal.h>
+#include <linux/sched.h>
#include <linux/miscdevice.h>
#include <libcfs/linux/portals_compat25.h>
cfs_mem_cache_create (const char *name, size_t size, size_t offset,
unsigned long flags)
{
+#ifdef HAVE_KMEM_CACHE_CREATE_DTOR
return kmem_cache_create(name, size, offset, flags, NULL, NULL);
+#else
+ return kmem_cache_create(name, size, offset, flags, NULL);
+#endif
}
int