新增 system call - Linux

Table of Contents

在網路上的文章大部分介紹 add system call方法都是

1.
/usr/src/linux-2.6.32/arch/x86/kernel/syscall_table_32.S

.long sys_rt_tgsigqueueinfo /* 335 */
.long sys_perf_event_open
.long sys_myoutput /* 337 */

2.
/usr/src/linux-2.6.32/arch/x86/include/asm/unistd_32.h

#define __NR_perf_event_open 336
#define __NR_myoutput 337

#define NR_syscalls 338

#ifdef __KERNEL__

3.
/usr/src/linux-2.6.32/arch/x86/include/asm/syscalls.h

asmlinkage int sys_uname(struct old_utsname __user *);
asmlinkage int sys_olduname(struct oldold_utsname __user *);

asmlinkage int sys_myoutput(void);


4.
/usr/src/linux-2.6.32/kernel/

新增一個 myoutput.c

#include
#include

asmlinkage int sys_myoutput(void)
{
return 10;
}


在這裡不懂為什麼system call main program 一定要在kernel\ 下
還要同一個檔名

不能在 net/core 某個.c檔裡面嗎?
因為我想要用 system call 去取 net/core/dev.c裡面變數的值出來

5. Makefile 加進去

6. 重編譯 ,user space include進來

--

All Comments

Suhail Hany avatarSuhail Hany2015-07-16
你先說你要取啥值, 有一定要寫 syscall 的必要?
Kristin avatarKristin2015-07-17
原po應該只是學習吧