红联Linux门户
Linux帮助

Linux系统调用的添加

发布时间:2015-11-05 21:54:23来源:linux网站作者:钱国正

1.下载内核源码2.6.36.4


2.建立文件夹~/linux/linux-dirty

cd ~linux/linux-dirty把解压缩后的内核源码存入此目录

qian@ubuntu:~/linux/linux-dirty$ ls 
arch     crypto         fs       Kbuild       Makefile  REPORTING-BUGS  sound 
block    Documentation  include  kernel       mm        samples         tools 
COPYING  drivers        init     lib          net       scripts         usr 
CREDITS  firmware       ipc      MAINTAINERS  README    security        virt 


3.编辑文件 arch/x86/kernel/syscall_table_32.S

末尾添加

.long sys_mysyscall   /*  341 */

.char * sys_getWebPageTitle  /*  342 */

你的新调用的编号就是上一行的编号+1,记住这个编号,后面要用。


4.kernel/sys.c

添加

asmlinkage longsys_mysyscall(intnumber)
{
if(number>0)return123456
elsereturn654321;
}

asmlinage char * sys_getWebPageTitle(char *website)

{

..............

}


5.arch/x86/include/asm/unistd_32.h

#define __NR_mysyscall 341       //这341是之前记下的那个编号

#define __NR_mygetWebPageTitle  //342


6.如果是第一次编译内核,可能会出席ncurses库没有安装。

apt-get install libncurses5-dev

make defconfig

make

arch/x86/kernel/syscall_table_32.S: Assembler messages:  arch/x86/kernel/syscall_table_32.S:344: Error: unknown pseudo-op: `.char' 
make[2]: *** [arch/x86/kernel/entry_32.o] Error 1 
make[1]: *** [arch/x86/kernel] Error 2


ARM Linux系统调用过程:http://www.linuxdiyf.com/linux/11498.html

Arm Linux 2.6.24添加系统调用:http://www.linuxdiyf.com/linux/8631.html

Linux内核中添加新的系统调用:http://www.linuxdiyf.com/linux/6844.html