linux4加一个系统调用,在linux-4.12.4中增加系统调用

在linux-4.12.4中增加系统调用

1.在文件./include/linux/syscalls.h中定义新的系统调用函数

asmlinkage long sys_statxtest(char __user*filename);

2.在文件./arch/arm/tools/syscall.tbl中增加定义行

398    common  statxtest               sys_statxtest

3.在文件./include/uapi/asm-generic/unistd.h增加定义----第三步可能不需要

#define __NR_statxtest 292

__SYSCALL(__NR_statxtest,     sys_statxtest)

4.

SYSCALL_DEFINE1(statxtest, char __user *,filename)

{

char str[]="test\r\n";

printk(KERN_WARNING,"this is a test");

copy_to_user(filename, str, strlen(str) );

}

5.编译的过程中会生成中间文件unistd-common.h unistd-eabi.h unistd-eabi.h

在目录./arch/arm/include/generated/uapi/asm/下该三个文件要复制到相应的交叉编译器下的对应目录中。

unistd-common.h中部分内容如下:

#define __NR_statx (__NR_SYSCALL_BASE + 397)

#define __NR_statxtest (__NR_SYSCALL_BASE + 398)

6.应用代码

#include

#include

#include

#include

void main()

{

char buffer[10]={0};

printf("this is a test!");

syscall(__NR_statxtest,buffer);

printf("buffer=%s\r\n",buffer);

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值