核心模組程式結構

2021-06-14 02:14:45 字數 1787 閱讀 4902

1.模組載入函式(

必須)模組載入函式必須以「module_init(

函式名)」

的形式被指定。若初始化成功則返回0,

否則返回錯誤編碼。 s

truct int __init initialization_funcfction(void)

module_init(initialization_function);//

指定initialization_function

為初始化函式。

2.模組解除安裝函式(必須)

模組解除安裝函式必須以「module_exit(

函式名)」

的形式被指定,無返回值。 s

truct void __exit cleanup_function(void)

module_exit(cleanup_function);//

指定cleanup_function

為模組解除安裝函式。

3.模組許可宣告(必須)

許可宣告描述核心模組的許可許可權,如果不宣告license

,模組載入時,收到keneltainted

警告。

license

包括:gpl

,gplv2,gpl and additional rights, dual bsd/gpl, dual mpl/gpl, proprietary.

宣告方法: module_license(

許可權); 4.

模組引數(可選)

可以用「module_param(

引數名,引數型別,引數讀/

寫許可權)」

為模組定義乙個引數。例如:

static char * name;

module_param(name,charp,s_irugo);

在insmod

時就可以這樣傳入引數:insmod test.ko name=」zhangsan」

5匯出符號(可選)

linux2.6

的「/proc/kallsy「

檔案對應著核心符號表,它記錄了符號以及符號所在的記憶體位址。模組可以使用巨集export_symbol(

符號名)

或者export_symbol_gpl(

符號名)

把符號匯出到核心符號表,這樣其他模組就可以使用匯出的符號表了,

使用時用extern

宣告一下即可。

6.模組宣告與描述(可選)

module_author(author);//作者

module_description(description);//

模組描述

module_version(version_string);//版本

… 7.乙個簡單的核心模組例子hello.c。

#include

#include

static int hello_init(void)

static void hello_exit(void)

module_init(hello_init);  /*指定hello_init為模組載入函式*/

module_exit(hello_exit); /*指定hello_exit為模組解除安裝函式*/

module_author("miaohy");/*作者*/

module_license("gpl");/*許可權*/

module_description("a****** hello world module");/*模組描述*/

module_alias("a******st module");/*模組別名*/

CH04 Linux核心模組程式結構 md

乙個linux核心模組主要由以下幾部分組成 模組解除安裝函式 通過rmmod命令解除安裝模組時,模組的解除安裝函式會自動被核心執行,完成與模組載入函式相反的功能。模組許可證宣告 許可證 license 宣告描述核心模組的許可許可權,如果不宣告license,模組被載入時,將收到核心被汙染 kerne...

C 程式結構

c 中的組織結構的關鍵概念是程式 program 命名空間 namespace 型別 type 成員 member 和程式集 assembly 命名空間 型別 成員 類 class 資料成員 字段 函式成員 方法,屬性,索引器,事件,運算子,構造 析構函式 介面 inte ce 函式成員 附經典理解...

c 程式結構

東南大學第5章c 程式結構 本章重點注意const static兩個關鍵字,也是企業面試中常見的面試題 一 作用域 作用域 識別符號的可見範圍 可見性 識別符號是否可以引用的問題。1,函式原型作用域 函式原型裡的形參 2,塊作用域 塊中的識別符號作用域在花括號之間 3,類作用域 類x的乙個成員m,在...