netlink_kernel_create 函数出错
Error in netlink_kernel_create function
我刚开始学习 Linux 开发,出于培训目的,我编写了一个简单的可加载内核模块。当我尝试通过发出以下命令添加它时 - make -C /lib/modules/$(uname -r)/build M=$PWD modules
我收到以下错误:
错误:函数“netlink_kernel_create”的参数过多
nl_sk = netlink_kernel_create(&init_net, NETLINK_EXAMPLE, 0, recv_msg, NULL, THIS_MODULE);
你得到这个错误是因为 netlink_kernel_create
接受三个参数但你传递了 6.
static inline struct sock *
netlink_kernel_create(struct net *net, int unit, struct netlink_kernel_cfg *cfg)
{
return __netlink_kernel_create(net, unit, THIS_MODULE, cfg);
}
自 2.6 内核以来,许多函数的实现和签名都发生了变化,并且在内核版本之间仍在变化,因此请务必检查。
修复:
struct netlink_kernel_cfg cfg = {
.input = recv_msg,
};
nl_sk = netlink_kernel_create(&init_net, NETLINK_EXAMPLE, &cfg);
我刚开始学习 Linux 开发,出于培训目的,我编写了一个简单的可加载内核模块。当我尝试通过发出以下命令添加它时 - make -C /lib/modules/$(uname -r)/build M=$PWD modules
我收到以下错误:
错误:函数“netlink_kernel_create”的参数过多 nl_sk = netlink_kernel_create(&init_net, NETLINK_EXAMPLE, 0, recv_msg, NULL, THIS_MODULE);
你得到这个错误是因为 netlink_kernel_create
接受三个参数但你传递了 6.
static inline struct sock *
netlink_kernel_create(struct net *net, int unit, struct netlink_kernel_cfg *cfg)
{
return __netlink_kernel_create(net, unit, THIS_MODULE, cfg);
}
自 2.6 内核以来,许多函数的实现和签名都发生了变化,并且在内核版本之间仍在变化,因此请务必检查。
修复:
struct netlink_kernel_cfg cfg = {
.input = recv_msg,
};
nl_sk = netlink_kernel_create(&init_net, NETLINK_EXAMPLE, &cfg);