#include #include module_license("dual bsd/gpl"); // 如果沒有這行,編譯器會產生抱怨
static int hello_init(void)
static void hello_exit(void)
module_init(hello_init); // 指定裝載模組時初始化函式
module_exit(hello_exit); // 指定解除安裝模組時清楚函式
1. "可在執行時新增到核心中的**被稱為 模組" (ldd3 p13 可裝載模組)
2. 在root許可權下 使用insmod module_name.ko裝載模組; 使用rmmod module_name解除安裝模組
3. hello world模組
4. makefile
ifneq ($(kernelrelease),)
obj-m := hello.o
else
kerneldir ?= /usr/src/linux-headers-2.6.31-14-generic
pwd := $(shell pwd)
default:
$(make) -c $(kerneldir) m=$(pwd) modules
endif
5. 如果使用虛擬機器,在控制台看不到printk輸出的資訊,它可能輸出到/var/log/kern.log或者其他某個檔案裡去了
6. 可以使用lsmod命令檢視所有當前已載入的模組資訊,這些模組可以在/sys/module下找到
構造和執行模組
1.可在執行時新增到核心中的 被稱為 模組 ldd3 p13 可裝載模組 2.在root許可權下 使用insmod module name.ko裝載模組 使用rmmod module name解除安裝模組 3.hello world模組 4.makefile 5.如果使用虛擬機器,在控制台看不到pr...
構造和執行模組
構造乙個模組並不難,難的是如何把自己驅動的元件理解好,並最大化其效能,說的俗一點就是怎麼利用好器件的功能。核心模組程式和應用程式 大多數的小規模應用程式都是從頭到尾執行單個任務 而模組卻只是先註冊自己 以便服務以將來,接著它的初始化函式就立即結束。模組化程式執行在核心空間,是核心功能的乙個擴充套件,...
LDD Ch 2 構造和執行模組
module的相關的巨集定義都在include linux module.h中。module init,module exit也是巨集,在init.h中定義。init和exit函式指標的宣告如下 typedef int initcall t void 注意,返回0才是success,負數指明錯誤號。...