])
])
-#2.6.19 API change
+# 2.6.19 API change
#panic_notifier_list use atomic_notifier operations
#
AC_DEFUN([LN_ATOMIC_PANIC_NOTIFIER],
])
])
+# 2.6.20 API change INIT_WORK use 2 args and not
+# store data inside
+AC_DEFUN([LN_3ARGS_INIT_WORK],
+[AC_MSG_CHECKING([check INIT_WORK want 3 args])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/workqueue.h>
+],[
+ struct work_struct work;
+
+ INIT_WORK(&work, NULL, NULL);
+],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_3ARGS_INIT_WORK, 1,
+ [INIT_WORK use 3 args and store data inside])
+],[
+ AC_MSG_RESULT(NO)
+])
+])
+
+# 2.6.21 api change. 'register_sysctl_table' use only one argument,
+# instead of more old which need two.
+AC_DEFUN([LL_2ARGS_REGISTER_SYSCTL],
+[AC_MSG_CHECKING([check register_sysctl_table want 2 args])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/sysctl.h>
+],[
+ return register_sysctl_table(NULL,0);
+],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_2ARGS_REGISTER_SYSCTL, 1,
+ [register_sysctl_table want 2 args])
+],[
+ AC_MSG_RESULT(NO)
+])
+])
+
#
# LN_PROG_LINUX
#
# 2.6.19
LN_KMEM_CACHE_DESTROY_INT
LN_ATOMIC_PANIC_NOTIFIER
+# 2.6.20
+LN_3ARGS_INIT_WORK
+# 2.6.21
+LL_2ARGS_REGISTER_SYSCTL
])
#
if (current->need_resched)
schedule ();
}
-#define work_struct_t struct tq_struct
-
+#define work_struct_t struct tq_struct
+#define cfs_get_work_data(type,field,data) (data)
#else
+#ifdef HAVE_3ARGS_INIT_WORK
+
#define prepare_work(wq,cb,cbdata) \
do { \
INIT_WORK((wq), (void *)(cb), (void *)(cbdata)); \
} while (0)
+
+#define cfs_get_work_data(type,field,data) (data)
+
+#else
+
+#define prepare_work(wq,cb,cbdata) \
+do { \
+ INIT_WORK((wq), (void *)(cb)); \
+} while (0)
+
+#define cfs_get_work_data(type,field,data) container_of(data,type,field)
+
+#endif
+
#define wait_on_page wait_on_page_locked
#define our_recalc_sigpending(current) recalc_sigpending()
#define strtok(a,b) strpbrk(a, b)
typedef struct ctl_table cfs_sysctl_table_t;
typedef struct ctl_table_header cfs_sysctl_table_header_t;
+#ifdef HAVE_2ARGS_REGISTER_SYSCTL
#define cfs_register_sysctl_table(t, a) register_sysctl_table(t, a)
-#define cfs_unregister_sysctl_table(t) unregister_sysctl_table(t, a)
+#else
+#define cfs_register_sysctl_table(t, a) register_sysctl_table(t)
+#endif
+#define cfs_unregister_sysctl_table(t) unregister_sysctl_table(t)
/*
* Symbol register
#define cfs_work_struct_t WORK_QUEUE_ITEM
#define cfs_prepare_work(tq, routine, contex)
#define cfs_schedule_work(tq)
+#define cfs_get_work_data(type,field,data) (data)
/* ------------------------------------------------------------------- */
#if CONFIG_SYSCTL && !CFS_SYSFS_MODULE_PARM
gmnal_tunables.gm_sysctl =
- register_sysctl_table(gmnal_top_ctl_table, 0);
+ cfs_register_sysctl_table(gmnal_top_ctl_table, 0);
if (gmnal_tunables.gm_sysctl == NULL)
CWARN("Can't setup /proc tunables\n");
gmnal_fini();
#if CONFIG_SYSCTL && !CFS_SYSFS_MODULE_PARM
if (gmnal_tunables.gm_sysctl != NULL)
- unregister_sysctl_table(gmnal_tunables.gm_sysctl);
+ cfs_unregister_sysctl_table(gmnal_tunables.gm_sysctl);
#endif
}
kibnal_tunables_init ()
{
kibnal_tunables.kib_sysctl =
- register_sysctl_table(kibnal_top_ctl_table, 0);
+ cfs_register_sysctl_table(kibnal_top_ctl_table, 0);
if (kibnal_tunables.kib_sysctl == NULL)
CWARN("Can't setup /proc tunables\n");
kibnal_tunables_fini ()
{
if (kibnal_tunables.kib_sysctl != NULL)
- unregister_sysctl_table(kibnal_tunables.kib_sysctl);
+ cfs_unregister_sysctl_table(kibnal_tunables.kib_sysctl);
}
#else
sizeof(ipif_basename_space));
kiblnd_tunables.kib_sysctl =
- register_sysctl_table(kiblnd_top_ctl_table, 0);
+ cfs_register_sysctl_table(kiblnd_top_ctl_table, 0);
if (kiblnd_tunables.kib_sysctl == NULL)
CWARN("Can't setup /proc tunables\n");
kiblnd_sysctl_fini (void)
{
if (kiblnd_tunables.kib_sysctl != NULL)
- unregister_sysctl_table(kiblnd_tunables.kib_sysctl);
+ cfs_unregister_sysctl_table(kiblnd_tunables.kib_sysctl);
}
#else
kiblnd_tunables_init (void)
{
kiblnd_sysctl_init();
-
+
if (*kiblnd_tunables.kib_concurrent_sends > IBLND_RX_MSGS)
*kiblnd_tunables.kib_concurrent_sends = IBLND_RX_MSGS;
if (*kiblnd_tunables.kib_concurrent_sends < IBLND_MSG_QUEUE_SIZE)
kibnal_tunables_init ()
{
kibnal_tunables.kib_sysctl =
- register_sysctl_table(kibnal_top_ctl_table, 0);
+ cfs_register_sysctl_table(kibnal_top_ctl_table, 0);
if (kibnal_tunables.kib_sysctl == NULL)
CWARN("Can't setup /proc tunables\n");
kibnal_tunables_fini ()
{
if (kibnal_tunables.kib_sysctl != NULL)
- unregister_sysctl_table(kibnal_tunables.kib_sysctl);
+ cfs_unregister_sysctl_table(kibnal_tunables.kib_sysctl);
}
#else
sizeof(ptltrace_basename_space));
#endif
kptllnd_tunables.kptl_sysctl =
- register_sysctl_table(kptllnd_top_ctl_table, 0);
+ cfs_register_sysctl_table(kptllnd_top_ctl_table, 0);
if (kptllnd_tunables.kptl_sysctl == NULL)
CWARN("Can't setup /proc tunables\n");
kptllnd_tunables_fini ()
{
if (kptllnd_tunables.kptl_sysctl != NULL)
- unregister_sysctl_table(kptllnd_tunables.kptl_sysctl);
+ cfs_unregister_sysctl_table(kptllnd_tunables.kptl_sysctl);
}
#else
kqswnal_tunables_init ()
{
kqswnal_tunables.kqn_sysctl =
- register_sysctl_table(kqswnal_top_ctl_table, 0);
+ cfs_register_sysctl_table(kqswnal_top_ctl_table, 0);
if (kqswnal_tunables.kqn_sysctl == NULL)
CWARN("Can't setup /proc tunables\n");
kqswnal_tunables_fini ()
{
if (kqswnal_tunables.kqn_sysctl != NULL)
- unregister_sysctl_table(kqswnal_tunables.kqn_sysctl);
+ cfs_unregister_sysctl_table(kqswnal_tunables.kqn_sysctl);
}
#else
int
kranal_tunables_init ()
{
kranal_tunables.kra_sysctl =
- register_sysctl_table(kranal_top_ctl_table, 0);
-
+ cfs_register_sysctl_table(kranal_top_ctl_table, 0);
+
if (kranal_tunables.kra_sysctl == NULL)
CWARN("Can't setup /proc tunables\n");
-
+
return 0;
}
kranal_tunables_fini ()
{
if (kranal_tunables.kra_sysctl != NULL)
- unregister_sysctl_table(kranal_tunables.kra_sysctl);
+ cfs_unregister_sysctl_table(kranal_tunables.kra_sysctl);
}
#else
LASSERT (i < sizeof(ksocknal_ctl_table)/sizeof(ksocknal_ctl_table[0]));
ksocknal_tunables.ksnd_sysctl =
- register_sysctl_table(ksocknal_top_ctl_table, 0);
+ cfs_register_sysctl_table(ksocknal_top_ctl_table, 0);
if (ksocknal_tunables.ksnd_sysctl == NULL)
CWARN("Can't setup /proc tunables\n");
ksocknal_lib_tunables_fini ()
{
if (ksocknal_tunables.ksnd_sysctl != NULL)
- unregister_sysctl_table(ksocknal_tunables.ksnd_sysctl);
+ cfs_unregister_sysctl_table(ksocknal_tunables.ksnd_sysctl);
}
#else
int
sizeof(ipif_basename_space));
kibnal_tunables.kib_sysctl =
- register_sysctl_table(kibnal_top_ctl_table, 0);
-
+ cfs_register_sysctl_table(kibnal_top_ctl_table, 0);
+
if (kibnal_tunables.kib_sysctl == NULL)
CWARN("Can't setup /proc tunables\n");
kibnal_tunables_fini ()
{
if (kibnal_tunables.kib_sysctl != NULL)
- unregister_sysctl_table(kibnal_tunables.kib_sysctl);
+ cfs_unregister_sysctl_table(kibnal_tunables.kib_sysctl);
}
#else
}
#endif
-
-
-
-
-
-
int LL_PROC_PROTO(proc_dobitmasks);
static struct ctl_table lnet_table[] = {
- {PSDEV_DEBUG, "debug", &libcfs_debug, sizeof(int), 0644, NULL,
- &proc_dobitmasks},
- {PSDEV_SUBSYSTEM_DEBUG, "subsystem_debug", &libcfs_subsystem_debug,
- sizeof(int), 0644, NULL, &proc_dobitmasks},
- {PSDEV_PRINTK, "printk", &libcfs_printk, sizeof(int), 0644, NULL,
- &proc_dobitmasks},
- {PSDEV_CONSOLE_RATELIMIT, "console_ratelimit",&libcfs_console_ratelimit,
- sizeof(int), 0644, NULL, &proc_dointvec},
- {PSDEV_DEBUG_PATH, "debug_path", debug_file_path,
- sizeof(debug_file_path), 0644, NULL, &proc_dostring, &sysctl_string},
- {PSDEV_LNET_UPCALL, "upcall", lnet_upcall,
- sizeof(lnet_upcall), 0644, NULL, &proc_dostring,
- &sysctl_string},
- {PSDEV_LNET_MEMUSED, "memused", (int *)&libcfs_kmemory.counter,
- sizeof(int), 0444, NULL, &proc_dointvec},
- {PSDEV_LNET_CATASTROPHE, "catastrophe", &libcfs_catastrophe,
- sizeof(int), 0444, NULL, &proc_dointvec},
+ {
+ .ctl_name = PSDEV_DEBUG,
+ .procname = "debug",
+ .data = &libcfs_debug,
+ .maxlen = sizeof(int),
+ .mode = 0644,
+ .proc_handler = &proc_dobitmasks
+ },
+ {
+ .ctl_name = PSDEV_SUBSYSTEM_DEBUG,
+ .procname = "subsystem_debug",
+ .data = &libcfs_subsystem_debug,
+ .maxlen = sizeof(int),
+ .mode = 0644,
+ .proc_handler = &proc_dobitmasks
+ },
+ {
+ .ctl_name = PSDEV_PRINTK,
+ .procname = "printk",
+ .data = &libcfs_printk,
+ .maxlen = sizeof(int),
+ .mode = 0644,
+ .proc_handler = &proc_dobitmasks
+ },
+ {
+ .ctl_name = PSDEV_CONSOLE_RATELIMIT,
+ .procname = "console_ratelimit",
+ .data = &libcfs_console_ratelimit,
+ .maxlen = sizeof(int),
+ .mode = 0644,
+ .proc_handler = &proc_dointvec
+ },
+
+ {
+ .ctl_name = PSDEV_DEBUG_PATH,
+ .procname = "debug_path",
+ .data = debug_file_path,
+ .maxlen = sizeof(debug_file_path),
+ .mode = 0644,
+ .proc_handler = &proc_dostring,
+ .strategy = &sysctl_string
+ },
+
+ {
+ .ctl_name = PSDEV_LNET_UPCALL,
+ .procname = "upcall",
+ .data = lnet_upcall,
+ .maxlen = sizeof(lnet_upcall),
+ .mode = 0644,
+ .proc_handler = &proc_dostring,
+ .strategy = &sysctl_string
+ },
+ {
+ .ctl_name = PSDEV_LNET_MEMUSED,
+ .procname = "memused",
+ .data = (int *)&libcfs_kmemory.counter,
+ .maxlen = sizeof(int),
+ .mode = 0444,
+ .proc_handler = &proc_dointvec
+ },
+ {
+ .ctl_name = PSDEV_LNET_CATASTROPHE,
+ .procname = "catastrophe",
+ .data = &libcfs_catastrophe,
+ .maxlen = sizeof(int),
+ .mode = 0444,
+ .proc_handler = &proc_dointvec
+ },
{0}
};
static struct ctl_table top_table[2] = {
- {PSDEV_LNET, "lnet", NULL, 0, 0555, lnet_table},
+ {
+ .ctl_name = PSDEV_LNET,
+ .procname = "lnet",
+ .data = NULL,
+ .maxlen = 0,
+ .mode = 0555,
+ .child = lnet_table
+ },
{0}
};
#ifdef CONFIG_SYSCTL
if (!lnet_table_header)
- lnet_table_header = register_sysctl_table(top_table, 0);
+ lnet_table_header = cfs_register_sysctl_table(top_table, 0);
#endif
ent = create_proc_entry("sys/lnet/dump_kernel", 0, NULL);
#ifdef CONFIG_SYSCTL
if (lnet_table_header)
- unregister_sysctl_table(lnet_table_header);
+ cfs_unregister_sysctl_table(lnet_table_header);
lnet_table_header = NULL;
#endif
}