带paramter的驱动(book.ko)
1,代码
1 /* 2 * a simple kernel module supporting parameters 3 * 4 * Copyright (C) 2014 Barry Song (baohua@kernel.org) 5 * 6 * Licensed under GPLv2 or later. 7 */ 8 9 #include <linux/init.h> 10 #include <linux/module.h> 11 12 static char *book_name = "dissecting Linux Device Driver"; 13 module_param(book_name, charp, S_IRUGO); 14 15 static int book_num = 4000; 16 module_param(book_num, int, S_IRUGO); 17 18 static int __init book_init(void) 19 { 20 printk(KERN_INFO "book name:%s\n", book_name); 21 printk(KERN_INFO "book num:%d\n", book_num); 22 return 0; 23 } 24 module_init(book_init); 25 26 static void __exit book_exit(void) 27 { 28 printk(KERN_INFO "book module exit\n "); 29 } 30 module_exit(book_exit); 31 32 MODULE_AUTHOR("Barry Song <baohua@kernel.org>"); 33 MODULE_LICENSE("GPL v2"); 34 MODULE_DESCRIPTION("A simple Module for testing module params"); 35 MODULE_VERSION("V1.0");
module_param 用来定义需要传递的参数,这里的参数都是有默认值的
2,makefile
1 KVERS = $(shell uname -r) 2 3 # Kernel modules 4 obj-m += book.o 5 6 # Specify flags for the module compilation. 7 #EXTRA_CFLAGS=-g -O0 8 9 build: kernel_modules 10 11 kernel_modules: 12 make -C /lib/modules/$(KVERS)/build M=$(CURDIR) modules 13 14 clean: 15 make -C /lib/modules/$(KVERS)/build M=$(CURDIR) clean
和hello驱动的makefile类似
3,安装驱动和查看参数
3.1 不带参数模式: insmod ./book.ko
查看参数如下所示:
baohua@baohua-VirtualBox:/sys/module/book/parameters$ cat book_name dissecting Linux Device Driver baohua@baohua-VirtualBox:/sys/module/book/parameters$ cat book_num 4000
3.2 带参数模式: insmod ./book.ko book_name='test123' book_num=500
参数如下所示:
baohua@baohua-VirtualBox:/sys/module/book/parameters$ cat book_name test123 baohua@baohua-VirtualBox:/sys/module/book/parameters$ cat book_num 500
5,卸载驱动
rmmod book
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2022-06-06 typedef void(*Func)(void)
2022-06-06 c语言void+c语言泛型设计