最簡單的 Linux 驅動程式
阿新 • • 發佈:2018-12-09
前些天開啟以前的硬碟,翻看到以前學驅動的筆記,於是想將這些東西的一部分記錄下來,以後有空可以經常翻閱。
1.編譯/執行環境
Ubuntu 14.04 LTS, Linux 3.19.0-25-generic, gcc version 4.8.4
2.程式程式碼
#include <linux/init.h> #include <linux/module.h> static int __init hello_init(void) { printk(KERN_INFO "init the hello driver\n"); return 0; } static void __exit hello_exit(void) { printk(KERN_INFO "exit hello driver\n"); } int hello_add_integar(int a, int b) { return (a+b); } int hello_sub_integar(int a, int b) { return (a-b); } module_init(hello_init); module_exit(hello_exit); EXPORT_SYMBOL(hello_add_integar); EXPORT_SYMBOL(hello_sub_integar); MODULE_AUTHOR("Linsc"); MODULE_LICENSE("Dual BSD/GPL"); MODULE_VERSION("0.0.2"); MODULE_DESCRIPTION("Linsc's hello driver.");
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KERNELDIR ?=/lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
clean:
-rm -rf *.o .depend
4.編譯
make clean; make
5.檢視核心列印資訊
dmesg | grep "hello"
6.檢視符號資訊
cat /proc/kallsyms | grep hello