svn commit: r324685 - in stable/10/sys: dev/cxgbe/iw_cxgbe dev/mlx5/mlx5_core ofed/drivers/infiniband/core ofed/drivers/infiniband/debug ofed/drivers/infiniband/hw/mlx4 ofed/drivers/infiniband/hw/m...
Hans Petter Selasky
hselasky at FreeBSD.org
Tue Oct 17 11:20:36 UTC 2017
Author: hselasky
Date: Tue Oct 17 11:20:32 2017
New Revision: 324685
URL: https://svnweb.freebsd.org/changeset/base/324685
Log:
MFC r289568, r300676, r300677, r300719, r300720 and r300721:
Implement LinuxKPI module parameters as SYSCTLs.
The bool module parameter is no longer supported, because there is no
equivalent in FreeBSD 10-stable. These are converted into "int" type.
There are two macros available which control the behaviour of the
LinuxKPI module parameters:
- LINUXKPI_PARAM_PARENT allows the consumer to set the SYSCTL parent
where the modules parameters will be created.
- LINUXKPI_PARAM_PREFIX defines a parameter name prefix, which is
added to all created module parameters.
The LinuxKPI module parameters also have a permissions value.
If any write bits are set we are allowed to modify the module
parameter runtime. Reflect this when creating the static SYSCTL
nodes.
The module_param_call() function is no longer supported.
Sponsored by: Mellanox Technologies
Modified:
stable/10/sys/dev/cxgbe/iw_cxgbe/provider.c
stable/10/sys/dev/mlx5/mlx5_core/mlx5_main.c
stable/10/sys/ofed/drivers/infiniband/core/cma.c
stable/10/sys/ofed/drivers/infiniband/core/local_sa.c
stable/10/sys/ofed/drivers/infiniband/core/mad.c
stable/10/sys/ofed/drivers/infiniband/core/multicast.c
stable/10/sys/ofed/drivers/infiniband/core/umem.c
stable/10/sys/ofed/drivers/infiniband/core/uverbs_cmd.c
stable/10/sys/ofed/drivers/infiniband/debug/memtrack.c
stable/10/sys/ofed/drivers/infiniband/hw/mlx4/main.c
stable/10/sys/ofed/drivers/infiniband/hw/mthca/mthca_catas.c
stable/10/sys/ofed/drivers/infiniband/hw/mthca/mthca_cmd.c
stable/10/sys/ofed/drivers/infiniband/hw/mthca/mthca_main.c
stable/10/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h
stable/10/sys/ofed/drivers/infiniband/ulp/sdp/sdp.h
stable/10/sys/ofed/drivers/infiniband/util/madeye.c
stable/10/sys/ofed/drivers/net/mlx4/catas.c
stable/10/sys/ofed/drivers/net/mlx4/en_main.c
stable/10/sys/ofed/drivers/net/mlx4/en_tx.c
stable/10/sys/ofed/drivers/net/mlx4/fw.c
stable/10/sys/ofed/drivers/net/mlx4/main.c
stable/10/sys/ofed/drivers/net/mlx4/port.c
stable/10/sys/ofed/include/linux/linux_compat.c
stable/10/sys/ofed/include/linux/moduleparam.h
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/dev/cxgbe/iw_cxgbe/provider.c
==============================================================================
--- stable/10/sys/dev/cxgbe/iw_cxgbe/provider.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/dev/cxgbe/iw_cxgbe/provider.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -32,6 +32,8 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
+#define LINUXKPI_PARAM_PREFIX iw_cxgbe_
+
#include "opt_inet.h"
#ifdef TCP_OFFLOAD
Modified: stable/10/sys/dev/mlx5/mlx5_core/mlx5_main.c
==============================================================================
--- stable/10/sys/dev/mlx5/mlx5_core/mlx5_main.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/dev/mlx5/mlx5_core/mlx5_main.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -25,6 +25,8 @@
* $FreeBSD$
*/
+#define LINUXKPI_PARAM_PREFIX mlx5_
+
#include <linux/kmod.h>
#include <linux/module.h>
#include <linux/errno.h>
Modified: stable/10/sys/ofed/drivers/infiniband/core/cma.c
==============================================================================
--- stable/10/sys/ofed/drivers/infiniband/core/cma.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/infiniband/core/cma.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -34,6 +34,8 @@
* SOFTWARE.
*/
+#define LINUXKPI_PARAM_PREFIX ibcore_
+
#include <linux/completion.h>
#include <linux/in.h>
#include <linux/in6.h>
Modified: stable/10/sys/ofed/drivers/infiniband/core/local_sa.c
==============================================================================
--- stable/10/sys/ofed/drivers/infiniband/core/local_sa.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/infiniband/core/local_sa.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -54,24 +54,8 @@ enum {
SA_DB_MAX_RETRY_TIMER = 256000 /* 256 sec */
};
-static int set_paths_per_dest(const char *val, struct kernel_param *kp);
static unsigned long paths_per_dest = 0;
-module_param_call(paths_per_dest, set_paths_per_dest, param_get_ulong,
- &paths_per_dest, 0644);
-MODULE_PARM_DESC(paths_per_dest, "Maximum number of paths to retrieve "
- "to each destination (DGID). Set to 0 "
- "to disable cache.");
-
-static int set_subscribe_inform_info(const char *val, struct kernel_param *kp);
static char subscribe_inform_info = 1;
-module_param_call(subscribe_inform_info, set_subscribe_inform_info,
- param_get_bool, &subscribe_inform_info, 0644);
-MODULE_PARM_DESC(subscribe_inform_info,
- "Subscribe for SA InformInfo/Notice events.");
-
-static int do_refresh(const char *val, struct kernel_param *kp);
-module_param_call(refresh, do_refresh, NULL, NULL, 0200);
-
static unsigned long retry_timer = SA_DB_MIN_RETRY_TIMER;
enum sa_db_lookup_method {
@@ -79,13 +63,7 @@ enum sa_db_lookup_method {
SA_DB_LOOKUP_RANDOM
};
-static int set_lookup_method(const char *val, struct kernel_param *kp);
-static int get_lookup_method(char *buf, struct kernel_param *kp);
static unsigned long lookup_method;
-module_param_call(lookup_method, set_lookup_method, get_lookup_method,
- &lookup_method, 0644);
-MODULE_PARM_DESC(lookup_method, "Method used to return path records when "
- "multiple paths exist to a given destination.");
static void sa_db_add_dev(struct ib_device *device);
static void sa_db_remove_dev(struct ib_device *device);
@@ -733,73 +711,6 @@ static void refresh_db(void)
list_for_each_entry(dev, &dev_list, list)
refresh_dev_db(dev);
-}
-
-static int do_refresh(const char *val, struct kernel_param *kp)
-{
- mutex_lock(&lock);
- refresh_db();
- mutex_unlock(&lock);
- return 0;
-}
-
-static int get_lookup_method(char *buf, struct kernel_param *kp)
-{
- return sprintf(buf,
- "%c %d round robin\n"
- "%c %d random",
- (lookup_method == SA_DB_LOOKUP_LEAST_USED) ? '*' : ' ',
- SA_DB_LOOKUP_LEAST_USED,
- (lookup_method == SA_DB_LOOKUP_RANDOM) ? '*' : ' ',
- SA_DB_LOOKUP_RANDOM);
-}
-
-static int set_lookup_method(const char *val, struct kernel_param *kp)
-{
- unsigned long method;
- int ret = 0;
-
- method = simple_strtoul(val, NULL, 0);
-
- switch (method) {
- case SA_DB_LOOKUP_LEAST_USED:
- case SA_DB_LOOKUP_RANDOM:
- lookup_method = method;
- break;
- default:
- ret = -EINVAL;
- break;
- }
-
- return ret;
-}
-
-static int set_paths_per_dest(const char *val, struct kernel_param *kp)
-{
- int ret;
-
- mutex_lock(&lock);
- ret = param_set_ulong(val, kp);
- if (ret)
- goto out;
-
- if (paths_per_dest > SA_DB_MAX_PATHS_PER_DEST)
- paths_per_dest = SA_DB_MAX_PATHS_PER_DEST;
- refresh_db();
-out:
- mutex_unlock(&lock);
- return ret;
-}
-
-static int set_subscribe_inform_info(const char *val, struct kernel_param *kp)
-{
- int ret;
-
- ret = param_set_bool(val, kp);
- if (ret)
- return ret;
-
- return do_refresh(val, kp);
}
static void port_work_handler(struct work_struct *work)
Modified: stable/10/sys/ofed/drivers/infiniband/core/mad.c
==============================================================================
--- stable/10/sys/ofed/drivers/infiniband/core/mad.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/infiniband/core/mad.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -33,6 +33,9 @@
* SOFTWARE.
*
*/
+
+#define LINUXKPI_PARAM_PREFIX ibcore_
+
#include <linux/dma-mapping.h>
#include <rdma/ib_cache.h>
Modified: stable/10/sys/ofed/drivers/infiniband/core/multicast.c
==============================================================================
--- stable/10/sys/ofed/drivers/infiniband/core/multicast.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/infiniband/core/multicast.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -30,6 +30,8 @@
* SOFTWARE.
*/
+#define LINUXKPI_PARAM_PREFIX ibcore_
+
#include <linux/completion.h>
#include <linux/dma-mapping.h>
#include <linux/err.h>
Modified: stable/10/sys/ofed/drivers/infiniband/core/umem.c
==============================================================================
--- stable/10/sys/ofed/drivers/infiniband/core/umem.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/infiniband/core/umem.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -32,6 +32,8 @@
* SOFTWARE.
*/
+#define LINUXKPI_PARAM_PREFIX ibcore_
+
#include <linux/mm.h>
#include <linux/dma-mapping.h>
#include <linux/sched.h>
@@ -52,7 +54,7 @@
#include "uverbs.h"
static int allow_weak_ordering;
-module_param(allow_weak_ordering, bool, 0444);
+module_param(allow_weak_ordering, int, 0444);
MODULE_PARM_DESC(allow_weak_ordering, "Allow weak ordering for data registered memory");
#define IB_UMEM_MAX_PAGE_CHUNK \
Modified: stable/10/sys/ofed/drivers/infiniband/core/uverbs_cmd.c
==============================================================================
--- stable/10/sys/ofed/drivers/infiniband/core/uverbs_cmd.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/infiniband/core/uverbs_cmd.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -33,6 +33,8 @@
* SOFTWARE.
*/
+#define LINUXKPI_PARAM_PREFIX ibcore_
+
#include <linux/file.h>
#include <linux/fs.h>
#include <linux/lockdep.h>
Modified: stable/10/sys/ofed/drivers/infiniband/debug/memtrack.c
==============================================================================
--- stable/10/sys/ofed/drivers/infiniband/debug/memtrack.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/infiniband/debug/memtrack.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -19,6 +19,8 @@
Copyright (c) 2004 Mellanox Technologies Ltd. All rights reserved.
*/
+#define LINUXKPI_PARAM_PREFIX memtrack_
+
#define C_MEMTRACK_C
#ifdef kmalloc
Modified: stable/10/sys/ofed/drivers/infiniband/hw/mlx4/main.c
==============================================================================
--- stable/10/sys/ofed/drivers/infiniband/hw/mlx4/main.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/infiniband/hw/mlx4/main.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -31,6 +31,8 @@
* SOFTWARE.
*/
+#define LINUXKPI_PARAM_PREFIX mlx4_
+
#include <linux/module.h>
#ifdef __linux__
Modified: stable/10/sys/ofed/drivers/infiniband/hw/mthca/mthca_catas.c
==============================================================================
--- stable/10/sys/ofed/drivers/infiniband/hw/mthca/mthca_catas.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/infiniband/hw/mthca/mthca_catas.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -30,6 +30,8 @@
* SOFTWARE.
*/
+#define LINUXKPI_PARAM_PREFIX mthca_
+
#include <linux/jiffies.h>
#include <linux/timer.h>
#include <linux/workqueue.h>
Modified: stable/10/sys/ofed/drivers/infiniband/hw/mthca/mthca_cmd.c
==============================================================================
--- stable/10/sys/ofed/drivers/infiniband/hw/mthca/mthca_cmd.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/infiniband/hw/mthca/mthca_cmd.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -32,6 +32,8 @@
* SOFTWARE.
*/
+#define LINUXKPI_PARAM_PREFIX mthca_
+
#include <linux/completion.h>
#include <linux/pci.h>
#include <linux/errno.h>
Modified: stable/10/sys/ofed/drivers/infiniband/hw/mthca/mthca_main.c
==============================================================================
--- stable/10/sys/ofed/drivers/infiniband/hw/mthca/mthca_main.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/infiniband/hw/mthca/mthca_main.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -32,6 +32,8 @@
* SOFTWARE.
*/
+#define LINUXKPI_PARAM_PREFIX mthca_
+
#include <linux/module.h>
#include <linux/errno.h>
#include <linux/pci.h>
Modified: stable/10/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h
==============================================================================
--- stable/10/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h Tue Oct 17 11:20:32 2017 (r324685)
@@ -35,6 +35,8 @@
#ifndef _IPOIB_H
#define _IPOIB_H
+#define LINUXKPI_PARAM_PREFIX ipoib_
+
#include "opt_inet.h"
#include "opt_inet6.h"
#include "opt_ofed.h"
Modified: stable/10/sys/ofed/drivers/infiniband/ulp/sdp/sdp.h
==============================================================================
--- stable/10/sys/ofed/drivers/infiniband/ulp/sdp/sdp.h Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/infiniband/ulp/sdp/sdp.h Tue Oct 17 11:20:32 2017 (r324685)
@@ -1,6 +1,8 @@
#ifndef _SDP_H_
#define _SDP_H_
+#define LINUXKPI_PARAM_PREFIX ib_sdp_
+
#include "opt_ddb.h"
#include "opt_inet.h"
#include "opt_ofed.h"
Modified: stable/10/sys/ofed/drivers/infiniband/util/madeye.c
==============================================================================
--- stable/10/sys/ofed/drivers/infiniband/util/madeye.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/infiniband/util/madeye.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -32,6 +32,9 @@
*
* $Id$
*/
+
+#define LINUXKPI_PARAM_PREFIX ib_madeye_
+
#include <linux/module.h>
#include <linux/device.h>
#include <linux/err.h>
Modified: stable/10/sys/ofed/drivers/net/mlx4/catas.c
==============================================================================
--- stable/10/sys/ofed/drivers/net/mlx4/catas.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/net/mlx4/catas.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -31,6 +31,8 @@
* SOFTWARE.
*/
+#define LINUXKPI_PARAM_PREFIX mlx4_
+
#include <linux/workqueue.h>
#include <linux/module.h>
Modified: stable/10/sys/ofed/drivers/net/mlx4/en_main.c
==============================================================================
--- stable/10/sys/ofed/drivers/net/mlx4/en_main.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/net/mlx4/en_main.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -31,6 +31,8 @@
*
*/
+#define LINUXKPI_PARAM_PREFIX mlx4_
+
#include <linux/module.h>
#include <linux/delay.h>
#include <linux/netdevice.h>
Modified: stable/10/sys/ofed/drivers/net/mlx4/en_tx.c
==============================================================================
--- stable/10/sys/ofed/drivers/net/mlx4/en_tx.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/net/mlx4/en_tx.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -31,6 +31,8 @@
*
*/
+#define LINUXKPI_PARAM_PREFIX mlx4_
+
#include <linux/page.h>
#include <linux/mlx4/cq.h>
#include <linux/slab.h>
Modified: stable/10/sys/ofed/drivers/net/mlx4/fw.c
==============================================================================
--- stable/10/sys/ofed/drivers/net/mlx4/fw.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/net/mlx4/fw.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -32,6 +32,8 @@
* SOFTWARE.
*/
+#define LINUXKPI_PARAM_PREFIX mlx4_
+
#include <linux/etherdevice.h>
#include <linux/mlx4/cmd.h>
#include <linux/module.h>
@@ -49,8 +51,8 @@ enum {
extern void __buggy_use_of_MLX4_GET(void);
extern void __buggy_use_of_MLX4_PUT(void);
-static bool enable_qos;
-module_param(enable_qos, bool, 0444);
+static int enable_qos;
+module_param(enable_qos, int, 0444);
MODULE_PARM_DESC(enable_qos, "Enable Quality of Service support in the HCA (default: off)");
#define MLX4_GET(dest, source, offset) \
Modified: stable/10/sys/ofed/drivers/net/mlx4/main.c
==============================================================================
--- stable/10/sys/ofed/drivers/net/mlx4/main.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/net/mlx4/main.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -33,6 +33,8 @@
* SOFTWARE.
*/
+#define LINUXKPI_PARAM_PREFIX mlx4_
+
#include <linux/kmod.h>
/*
* kmod.h must be included before module.h since it includes (indirectly) sys/module.h
Modified: stable/10/sys/ofed/drivers/net/mlx4/port.c
==============================================================================
--- stable/10/sys/ofed/drivers/net/mlx4/port.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/drivers/net/mlx4/port.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -30,6 +30,8 @@
* SOFTWARE.
*/
+#define LINUXKPI_PARAM_PREFIX mlx4_
+
#include <linux/errno.h>
#include <linux/if_ether.h>
#include <linux/module.h>
Modified: stable/10/sys/ofed/include/linux/linux_compat.c
==============================================================================
--- stable/10/sys/ofed/include/linux/linux_compat.c Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/include/linux/linux_compat.c Tue Oct 17 11:20:32 2017 (r324685)
@@ -53,6 +53,7 @@
#include <linux/device.h>
#include <linux/slab.h>
#include <linux/module.h>
+#include <linux/moduleparam.h>
#include <linux/cdev.h>
#include <linux/file.h>
#include <linux/sysfs.h>
@@ -65,6 +66,8 @@
#include <vm/vm_pager.h>
#include <linux/workqueue.h>
+
+SYSCTL_NODE(_compat, OID_AUTO, linuxkpi, CTLFLAG_RW, 0, "LinuxKPI parameters");
MALLOC_DEFINE(M_KMALLOC, "linux", "Linux kmalloc compat");
Modified: stable/10/sys/ofed/include/linux/moduleparam.h
==============================================================================
--- stable/10/sys/ofed/include/linux/moduleparam.h Tue Oct 17 02:53:42 2017 (r324684)
+++ stable/10/sys/ofed/include/linux/moduleparam.h Tue Oct 17 11:20:32 2017 (r324685)
@@ -2,7 +2,7 @@
* Copyright (c) 2010 Isilon Systems, Inc.
* Copyright (c) 2010 iX Systems, Inc.
* Copyright (c) 2010 Panasas, Inc.
- * Copyright (c) 2013, 2014 Mellanox Technologies, Ltd.
+ * Copyright (c) 2013-2016 Mellanox Technologies, Ltd.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -25,209 +25,106 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD: head/sys/compat/linuxkpi/common/include/linux/moduleparam.h 300721 2016-05-26 09:04:14Z hselasky $
*/
-
#ifndef _LINUX_MODULEPARAM_H_
#define _LINUX_MODULEPARAM_H_
+#include <sys/types.h>
+#include <sys/sysctl.h>
+
#include <linux/types.h>
-/*
- * These are presently not hooked up to anything. In linux the parameters
- * can be set when modules are loaded. On FreeBSD these could be mapped
- * to kenv in the future.
- */
-struct kernel_param;
+#ifndef LINUXKPI_PARAM_PARENT
+#define LINUXKPI_PARAM_PARENT _compat_linuxkpi
+#endif
-typedef int (*param_set_fn)(const char *val, struct kernel_param *kp);
-typedef int (*param_get_fn)(char *buffer, struct kernel_param *kp);
+#ifndef LINUXKPI_PARAM_PREFIX
+#define LINUXKPI_PARAM_PREFIX /* empty prefix is the default */
+#endif
-struct kernel_param {
- const char *name;
- u16 perm;
- u16 flags;
- param_set_fn set;
- param_get_fn get;
- union {
- void *arg;
- struct kparam_string *str;
- struct kparam_array *arr;
- } un;
-};
+#ifndef LINUXKPI_PARAM_PERM
+#define LINUXKPI_PARAM_PERM(perm) (((perm) & 0222) ? CTLFLAG_RWTUN : CTLFLAG_RDTUN)
+#endif
-#define KPARAM_ISBOOL 2
+#define LINUXKPI_PARAM_CONCAT_SUB(a,b,c,d) a##b##c##d
+#define LINUXKPI_PARAM_CONCAT(...) LINUXKPI_PARAM_CONCAT_SUB(__VA_ARGS__)
+#define LINUXKPI_PARAM_PASS(...) __VA_ARGS__
+#define LINUXKPI_PARAM_DESC(name) LINUXKPI_PARAM_CONCAT(linuxkpi_,LINUXKPI_PARAM_PREFIX,name,_desc)
+#define LINUXKPI_PARAM_NAME(name) LINUXKPI_PARAM_CONCAT(LINUXKPI_PARAM_PREFIX,name,,)
-struct kparam_string {
- unsigned int maxlen;
- char *string;
-};
+#define LINUXKPI_PARAM_bool(name, var, perm) \
+ extern const char LINUXKPI_PARAM_DESC(name)[]; \
+ LINUXKPI_PARAM_PASS(SYSCTL_BOOL(LINUXKPI_PARAM_PARENT, OID_AUTO,\
+ LINUXKPI_PARAM_NAME(name), LINUXKPI_PARAM_PERM(perm), &(var), 0, \
+ LINUXKPI_PARAM_DESC(name)))
-struct kparam_array
-{
- unsigned int max;
- unsigned int *num;
- param_set_fn set;
- param_get_fn get;
- unsigned int elemsize;
- void *elem;
-};
+#define LINUXKPI_PARAM_byte(name, var, perm) \
+ extern const char LINUXKPI_PARAM_DESC(name)[]; \
+ LINUXKPI_PARAM_PASS(SYSCTL_U8(LINUXKPI_PARAM_PARENT, OID_AUTO, \
+ LINUXKPI_PARAM_NAME(name), LINUXKPI_PARAM_PERM(perm), &(var), 0, \
+ LINUXKPI_PARAM_DESC(name)))
-static inline void
-param_sysinit(struct kernel_param *param)
-{
-}
+#define LINUXKPI_PARAM_short(name, var, perm) \
+ extern const char LINUXKPI_PARAM_DESC(name)[]; \
+ LINUXKPI_PARAM_PASS(SYSCTL_S16(LINUXKPI_PARAM_PARENT, OID_AUTO, \
+ LINUXKPI_PARAM_NAME(name), LINUXKPI_PARAM_PERM(perm), &(var), 0, \
+ LINUXKPI_PARAM_DESC(name)))
-#define module_param_call(name, set, get, arg, perm) \
- static struct kernel_param __param_##name = \
- { #name, perm, 0, set, get, { arg } }; \
- SYSINIT(name##_param_sysinit, SI_SUB_DRIVERS, SI_ORDER_FIRST, \
- param_sysinit, &__param_##name);
+#define LINUXKPI_PARAM_ushort(name, var, perm) \
+ extern const char LINUXKPI_PARAM_DESC(name)[]; \
+ LINUXKPI_PARAM_PASS(SYSCTL_U16(LINUXKPI_PARAM_PARENT, OID_AUTO, \
+ LINUXKPI_PARAM_NAME(name), LINUXKPI_PARAM_PERM(perm), &(var), 0, \
+ LINUXKPI_PARAM_DESC(name)))
-#define module_param_string(name, string, len, perm)
-
-#define module_param_named(name, var, type, mode) \
- module_param_call(name, param_set_##type, param_get_##type, &var, mode)
+#define LINUXKPI_PARAM_int(name, var, perm) \
+ extern const char LINUXKPI_PARAM_DESC(name)[]; \
+ LINUXKPI_PARAM_PASS(SYSCTL_INT(LINUXKPI_PARAM_PARENT, OID_AUTO, \
+ LINUXKPI_PARAM_NAME(name), LINUXKPI_PARAM_PERM(perm), &(var), 0,\
+ LINUXKPI_PARAM_DESC(name)))
-#define module_param(var, type, mode) \
- module_param_named(var, var, type, mode)
+#define LINUXKPI_PARAM_uint(name, var, perm) \
+ extern const char LINUXKPI_PARAM_DESC(name)[]; \
+ LINUXKPI_PARAM_PASS(SYSCTL_UINT(LINUXKPI_PARAM_PARENT, OID_AUTO, \
+ LINUXKPI_PARAM_NAME(name), LINUXKPI_PARAM_PERM(perm), &(var), 0, \
+ LINUXKPI_PARAM_DESC(name)))
-#define module_param_array(var, type, addr_argc, mode) \
- module_param_named(var, var, type, mode)
+#define LINUXKPI_PARAM_long(name, var, perm) \
+ extern const char LINUXKPI_PARAM_DESC(name)[]; \
+ LINUXKPI_PARAM_PASS(SYSCTL_LONG(LINUXKPI_PARAM_PARENT, OID_AUTO, \
+ LINUXKPI_PARAM_NAME(name), LINUXKPI_PARAM_PERM(perm), &(var), 0, \
+ LINUXKPI_PARAM_DESC(name)))
-#define MODULE_PARM_DESC(name, desc)
+#define LINUXKPI_PARAM_ulong(name, var, perm) \
+ extern const char LINUXKPI_PARAM_DESC(name)[]; \
+ LINUXKPI_PARAM_PASS(SYSCTL_ULONG(LINUXKPI_PARAM_PARENT, OID_AUTO, \
+ LINUXKPI_PARAM_NAME(name), LINUXKPI_PARAM_PERM(perm), &(var), 0, \
+ LINUXKPI_PARAM_DESC(name)))
-static inline int
-param_set_byte(const char *val, struct kernel_param *kp)
-{
+#define module_param_string(name, str, len, perm) \
+ extern const char LINUXKPI_PARAM_DESC(name)[]; \
+ LINUXKPI_PARAM_PASS(SYSCTL_STRING(LINUXKPI_PARAM_PARENT, OID_AUTO, \
+ LINUXKPI_PARAM_NAME(name), LINUXKPI_PARAM_PERM(perm), (str), (len), \
+ LINUXKPI_PARAM_DESC(name)))
- return 0;
-}
+#define module_param_named(name, var, type, mode) \
+ LINUXKPI_PARAM_##type(name, var, mode)
-static inline int
-param_get_byte(char *buffer, struct kernel_param *kp)
-{
+#define module_param(var, type, mode) \
+ LINUXKPI_PARAM_##type(var, var, mode)
- return 0;
-}
+#define module_param_named_unsafe(name, var, type, mode) \
+ LINUXKPI_PARAM_##type(name, var, mode)
+#define module_param_unsafe(var, type, mode) \
+ LINUXKPI_PARAM_##type(var, var, mode)
-static inline int
-param_set_short(const char *val, struct kernel_param *kp)
-{
+#define module_param_array(var, type, addr_argc, mode)
- return 0;
-}
+#define MODULE_PARM_DESC(name, desc) \
+ const char LINUXKPI_PARAM_DESC(name)[] = { desc }
-static inline int
-param_get_short(char *buffer, struct kernel_param *kp)
-{
+SYSCTL_DECL(_compat_linuxkpi);
- return 0;
-}
-
-
-static inline int
-param_set_ushort(const char *val, struct kernel_param *kp)
-{
-
- return 0;
-}
-
-static inline int
-param_get_ushort(char *buffer, struct kernel_param *kp)
-{
-
- return 0;
-}
-
-
-static inline int
-param_set_int(const char *val, struct kernel_param *kp)
-{
-
- return 0;
-}
-
-static inline int
-param_get_int(char *buffer, struct kernel_param *kp)
-{
-
- return 0;
-}
-
-
-static inline int
-param_set_uint(const char *val, struct kernel_param *kp)
-{
-
- return 0;
-}
-
-static inline int
-param_get_uint(char *buffer, struct kernel_param *kp)
-{
-
- return 0;
-}
-
-
-static inline int
-param_set_long(const char *val, struct kernel_param *kp)
-{
-
- return 0;
-}
-
-static inline int
-param_get_long(char *buffer, struct kernel_param *kp)
-{
-
- return 0;
-}
-
-
-static inline int
-param_set_ulong(const char *val, struct kernel_param *kp)
-{
-
- return 0;
-}
-
-static inline int
-param_get_ulong(char *buffer, struct kernel_param *kp)
-{
-
- return 0;
-}
-
-
-static inline int
-param_set_charp(const char *val, struct kernel_param *kp)
-{
-
- return 0;
-}
-
-static inline int
-param_get_charp(char *buffer, struct kernel_param *kp)
-{
-
- return 0;
-}
-
-
-static inline int
-param_set_bool(const char *val, struct kernel_param *kp)
-{
-
- return 0;
-}
-
-static inline int
-param_get_bool(char *buffer, struct kernel_param *kp)
-{
-
- return 0;
-}
-
-#endif /* _LINUX_MODULEPARAM_H_ */
+#endif /* _LINUX_MODULEPARAM_H_ */
More information about the svn-src-all
mailing list