linux内核态real cred,Linux内核实验报告——实验5.doc
Linux內核實驗報告
實驗題目:新系統調用設計實驗
實驗目的:
系統調用是內核提供給用戶應用程序使用的內核函數名,這些函數提供了內核為用戶
應用程序所提供的系統服務功能。這些函數在用戶應用程序中的書寫格式與用戶自定義函
數形式上沒有什么不同,但這些函數的編寫和調用過程卻與自定義函數有著很大的不同。
它們需要事先在內核中安排好入口和函數體,當調用時會引發系統軟中斷根據對應的存根
函數查中斷表進入請求的內核函數。
我們能夠學會添加一個自己的系統調用
硬件環境:
Pentium(R) Dual-Core CPU T4400 @ 2.20GHz
軟件環境:
Ubuntu12.04
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
內核版本:3.0.24
實驗步驟:
代碼分析
著中講解第二個實驗:要在do_page_fault中增加一個計數pfcount,設計它為一個全局變量,聲明在mm.h中。設計系統調用,返回該pfcount。
設計說明
do_page_fault的時候每次在缺頁的時候都會將pfcount計數加一,這樣我們只需要設計系統調用就能夠得到該值。
調試記錄
無
結論分析與體會:
在本次實驗中我們完整設計了兩個系統調用,實現系統調用主要有三個過程:
1.在syscall_table_32.S這個匯編文件中添加系統調用的入口項
2.在unistd_32.h中添加系統調用號,以便用戶程序調用
3.在內核中的某個地方實現系統調用
另外關于asmlinkage這個標記:
“"asmlinkage" is defined, for example, in the header file "include/asm-i386/linkage.h" as __attribute__((regparm(0))) that tells compiler put all function parameters in the stack (i.e. disables call optimization). ”
也就是說它告訴編譯器把所有的參數都放在堆棧中,而不是寄存器,這樣內嵌匯編代碼的時候有好處?
程序完整源代碼:
kernel/sys.c
/*
* linux/kernel/sys.c
*
* Copyright (C) 1991, 1992 Linus Torvalds
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
總結
以上是生活随笔為你收集整理的linux内核态real cred,Linux内核实验报告——实验5.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux文件显示程序,Linux下文件
- 下一篇: linux批量修改压缩图片大小,linu