ubuntu 10.10 添加系統調用全過程

1.下載內核 

 

http://www.kernel.org/下載linux-2.6.38,

你可以選擇穩定版或者新的測試版,但一定要下載Full source版。

     
2、解壓內核     
cd /usr/src
tar -jxvf linux-source-2.6.38.tar.bz2
     
將內核解壓到/usr/src
     
3、修改文件     
a)/usr/src/linux-source-2.6.38/kernel/sys.c     
可以用右鍵管理員打開或者
gedit /usr/src/linux-source-2.6.38/kernel/sys.c
 

 

在文件最後添加
asmlinkage int sys_mycall(int number)
{
 printk("This is my first system call!!!hahahaha!!");
 return number;
}
                                      
b)
/usr/src/linux-source-2.6.38/arch/x86/kernel/syscall_table_32.S      
可以用右鍵管理員打開或者
gedit /usr/src/linux-source-2.6.38/arch/x86/kernel/syscall_table_32.S
         
然後在一列 .long sys_XXXX的下一行添加
.long sys_mycall

並記住
他們分別是第幾個.long sys_XXXX
                      
c)/usr/src/linux-
source-2.6.38/arch/x86/include/asm/unistd_32.h         
可以用右鍵管理員打開或者
gedit /usr/src/linux-source-2.6.38/arch/x86/include/asm/unistd_32.h
                      
在一列#define __NR_XXXX NNN後添加幾行
         
#define __NR_mycall 341


注意後面那個數字是接着上面那幾行下來的


4、編譯內核

關於內核編譯,我在上一篇文章裏面已經講了,自己照上面的做就是了,下面是文章的鏈接:

《Ubuntu10.10下編譯內核linux-2.6.38成功》

 

5、重啓     
重啓ubuntu,如果能進入系統,證明基本上沒問題了。
打開終端輸入
uname -r   
查看版本號,如果是2.6.38就可以安心了
     
6、檢查系統調用     
隨便寫個函數試試看吧
在main函數中使用syscall(函數號,參數)測試系統調用
比如

 

#include <linux/unistd.h>

#include <stdio.h>

main(){

        printf("The number is %d/n",syscall(341,100));

}

出現如下輸出:The number is 100

編譯運行,然後打開終端輸入
sudo dmesg -c
查看最後一行是否有添加系統調用成功信息:

 如果有 "This is my first system call!!!hahahaha!!"

說明系統調用添加成功了!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章