添加linux系统调用
--基于3.5内核下
关于cond_syscall宏
cond_syscall(sys_socketcall);语句的意思是:如果存在sys_socketcall(),则声明这个函数,在程序链接的时候使用这个函数;如果不存在sys_socketcall()这个函数,就使用sys_ni_syscall()函数代替
步骤:
1.更新头文件
在arch/arm/include/asm/unistd.h中添加系统调用号
#define __NR_FindImage (__NR_SYSCALL_BASE+380)
#define __NR_DelImage (__NR_SYSCALL_BASE+381)
#define __NR_CorruptCheck (__NR_SYSCALL_BASE+382)
#define __NR_ReadWinbondFlash (__NR_SYSCALL_BASE+383)
#define __NR_WriteWinbondFlash (__NR_SYSCALL_BASE+384)
#define __NR_WinbondFlashBlockSize (__NR_SYSCALL_BASE+385)
#define __NR_WinbondFlashTotalSize (__NR_SYSCALL_BASE+386)
#define __NR_setresetpid (__NR_SYSCALL_BASE+387)
#define __NR_getromfsaddr (__NR_SYSCALL_BASE+388)
2.更新系统调用表
在arch/arm/kernel/calls.S中,添加系统调用表项
CALL(sys_ni_syscall) /* reserved for sys_kcmp */
/* 380 */ CALL(sys_FindImage)
CALL(sys_DelImage)
CALL(sys_CorruptCheck)
CALL(sys_ReadWinbondFlash)
CALL(sys_WriteWinbondFlash)
/* 385 */ CALL(sys_WinbondFlashBlockSize)
CALL(sys_WinbondFlashTotalSize)
CALL(sys_WinbondFlashBase)
CALL(sys_setresetpid)
CALL(sys_getromfsaddr)
/* 390 */ CALL(sys_ni_syscall) /* reserved for sys_kcmp */
3.添加系统调用函数