歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu 10.10 添加系統調用全過程

Ubuntu 10.10 添加系統調用全過程

日期:2017/2/28 16:18:41   编辑:Linux教程

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、編譯內核

關於內核編譯,我在上一篇文章裡面已經講了,自己照上面的做就是了,下面是文章的鏈接:《Ubuntu 10.10下成功編譯Linux-2.6.38內核》 http://www.linuxidc.com/Linux/2011-04/34080.htm


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!!"

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

Copyright © Linux教程網 All Rights Reserved