扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
启动参数
在前面的很多例子中,我们不得不硬性的将一些东西写如内核模块,例如在 /proc 中的文件名或设备的主设备号,因此我们可以对它 ioctl。 这和 Unix及 Linux的编写用户可以定制的灵活的程序精神是相矛盾的。
在程序或内核模块能开始工作之前告诉它一些需要的东西的办法是通过命令行参数。在内核模块的情况下,我们不能得到 argc 和 argv -- 代替的,我们得到更好的东西。我们可以在内核模块中定义全局变量并且 insmod将为我们填充它们。
在这个内核模块中,我们定义了两个: str1 和 str2。你所需要做的全部就是编译那个内核模块然后用insmod str1=xxx str2=yyy运行它。当init_module 被调用,str1 将指向字符串‘xxx’, str2 将指向‘yyy’。
在 2.0 版中对这些参数6.1没有类型检查。如果str1 或 str2 的第一个字符是数字,内核将用整数值填充变量而不是字符串指针。如果是在实际的情形下你需要检查这个。
另一方面,在 2.2 版中你用宏 MACRO_PARM 告诉 insmod 你期待一个参数,它的名字和类型 。这解决了类型的问题并且允许内核模块接收以数字开始的字符串。
|
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者