Linux实现驱动模块传参过程解析
程序员文章站
2022-07-06 08:27:57
在驱动的模块中声明一下你要传递的参数名称,类型和权限module_param(变量的名称,类型,权限);#include #include
在驱动的模块中声明一下你要传递的参数名称,类型和权限
module_param(变量的名称,类型,权限);
#include <linux/init.h> #include <linux/module.h> static char *p_name = "usr"; module_param(p_name, charp, s_irugo); module_parm_desc(p_name, "this is a char * string."); static int __init hi_init(void) { printk(kern_info "hi enter %s\n",p_name); return 0; } module_init(hi_init); static void __exit hi_exit(void) { printk(kern_info "hi exit %s\n ",p_name); } module_exit(hi_exit); module_author(" libra13179 "); module_license("gpl v2");
kvers = $(shell uname -r) # kernel modules obj-m += hi.o # specify flags for the module compilation. #extra_cflags=-g -o0 build: kernel_modules kernel_modules: make -c /lib/modules/$(kvers)/build m=$(curdir) modules # @echo $(kvers) clean: make -c /lib/modules/$(kvers)/build m=$(curdir) clean
不设置时候使用默认的
root@lin-virtual-machine:/home/lin/hi# insmod ./hi.ko root@lin-virtual-machine:/home/lin/hi# cat /var/log/syslog | grep hi ... jul 25 15:11:38 lin-virtual-machine kernel: [ 203.238178] hi enter usr ...
使用设置时候
root@lin-virtual-machine:/home/lin/hi# insmod hi.ko p_name='god'
加载模块后,都会在/sys/modules下生成一个模块的文件夹,文件夹下会有一个parameters文件夹,
里面包含的就是以参数名命名的文件节点,里面保存的就是我们设置的值,例如在p_name中
root@lin-virtual-machine:/home/lin/hi# cat /sys/module/hi/parameters/p_name
god
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。