構造和執行模組

2021-06-04 23:35:53 字數 820 閱讀 9868

#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,負數指明錯誤號。...