模块参数能否传递结构体数组?

发布于 2022-09-23 14:02:10 字数 34 浏览 14 评论 0

单个变量及数组能够在模块加载时传递给模块,那么结构体数组是否可行呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

最美的太阳 2022-09-30 14:02:11

传递如下的结构体数组:
struct usbid{
int vid;
int pid;
};
static struct usbid id[5];

insmod ./hello.ko id=4,3,2,1,0

打印结果:
id: 4,0,3,0,2,0,1,0,0,0

我的赋值方式是否有问题,试了{};等符号,不能够识别
请问应该如何赋值?

遗忘曾经 2022-09-30 14:02:11

把详细代码贴出来看看

黑白记忆 2022-09-30 14:02:11

写的一个测试程序

#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");

struct usbid{
        int vid;
        int pid;
};

static struct usbid id[5];

static int hello_init(void)
{
      printk("id: %d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
                                    id[0].vid,id[0].pid,id[1].vid,id[1].pid,
                                    id[2].vid,id[2].pid,id[3].vid,id[3].pid,
                                    id[4].vid,id[4].pid);
    return 0;
}

static void hello_exit(void)
{
    printk("Goodbye!\n ");
}

module_init(hello_init);
module_exit(hello_exit);

module_param_array(id, int, num, S_IRUGO | S_IWUSR);

思念绕指尖 2022-09-30 14:02:11

建议在用户空间实现

一杯敬自由 2022-09-30 14:02:11

to dreamice: 呵呵,没关系,这样显示很好!

insmod是在用户态做的,
“insmod ./hello.ko id=4,3,2,1,0”,结果是把值赋给了结构体的第一个成员
应该怎样写才能给结构体的每个成员都赋值呢?
在通过配置文件给模块配置参数时需要这种应用,请高手指点,多谢!

哆啦不做梦 2022-09-30 14:02:11

你研究一下Linux module programming,置顶资料里面有。不过我建议不要传结构体这样的东东,显得比较复杂。

不再让梦枯萎 2022-09-30 14:02:10

注意好user space 和kernel space应该都没有问题吧

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文