核心模組程式設計練習

2022-07-24 05:21:12 字數 2531 閱讀 2052

設計兩個核心模組,它們分別完成以下工作:

1) 設計乙個模組,該模組的功能是列出系統中所有核心程序的程式名、pid

號和程序的狀態。

2) 設計乙個帶有引數的核心模組,其引數為某個程序的pid

號;該模組的功能是列出該程序的家族資訊,包括父程序、兄弟程序和子程序的程式名、

pid號。

作業1的答

案:**

#include 

<

linux

/init.h

>

//定義在init.h

2#include

<

linux

/module.h

>

3#include

<

linux

/sched.h

>

4#include

<

linux

/list.h

>56

module_license(

"gpl");

78static

intname_init(

void

) //

初始化函式,註冊和申請資源。返回0表示初始化成功;其他值表示失敗924

printk("\n

");25}

2627

return

0; 28}

29static

void

name_exit(

void

) //

退出的函式,登出和釋放資源

3033

34module_init(name_init);

//標記的name_init函式在模組載入時呼叫

35module_exit(name_exit);

//標記的name_exit函式在解除安裝模組時呼叫

36

作業2

**

1

#include

<

linux

/init.h

>

//定義在init.h

2#include

<

linux

/module.h

>

3#include

<

linux

/sched.h

>

4#include

<

linux

/list.h

>56

module_license(

"gpl");

7static

intpid=1

;8module_param(pid,

int,s_irugo);

//給模組傳遞引數910

static

intname_init(

void

) //

初始化函式,註冊和申請資源。返回0表示初始化成功;其他值表示失敗

11*/

28//

searching the children

29list_for_each_entry(task2,

&task1

->

children, sibling)

32//

searching the siblings

33list_for_each_entry(task2,

&task1

->

real_parent

->

children, sibling)

3637

}else

40return

0; 41}

42static

void

name_exit(

void

) //

退出的函式,登出和釋放資源

4346

47module_init(name_init);

//標記的name_init函式在模組載入時呼叫

48module_exit(name_exit);

//標記的name_exit函式在解除安裝模組時呼叫

=find_task_by_pid(pid);

在2.6.30版本以前核心應該寫成

task1=find_task_by_vpid(pid);

最後把那個超級通用的核心編譯的makefile發出來吧。。-m:

=name.o

else

kdir:

=/lib

/modules

/$(shell uname -r)

/build

pwd:

=$(shell pwd)

default

:$(make) 

-c $(kdir) m

=$(pwd) modules

clean:

$(make) 

-c $(kdir) m

=$(pwd) clean

endif

Linux核心模組程式設計

目標 熟悉linux模組相關函式等 模組載入,例 static int init initialization function void module init initialization function 這裡 init define init attribute section init.t...

Linux核心模組程式設計

linux核心模組程式設計的資料有些紛繁複雜,有的過於簡單,有的過於龐雜,我試圖用筆記的形式想讀者展示怎樣來程序linux模組程式設計,力圖做到簡明扼要,這篇文章也是作為本人備忘的資料,所以有些地方過於簡略是難免的。本來這篇文章的目的就是讓使用者知其然,至於所以然還是請參考相應的資料,其實最好的資料...

核心模組程式設計入門總結 1

1.出現編譯的模組不符合當前模組的問題 原因 基本都是因為在用gcc編譯的時候加入了 i引數指定原始碼樹,但是所指定的版本和當前的核心版本衝突的問題。比如我碰到的是2.4.20 8custom rh9.0自帶的核心 的問題,和我們後來編譯的2.4.20 8的衝突。解決 修正.include linu...