gzyueqian
13352868059

粤嵌linux基础入门学习 linux系统中添加系统调用

更新时间: 2018-12-21 12:00:40来源: 粤嵌教育浏览量:5025

      linux系统中添加系统是怎样调用的?从linux基础入门学习出发,一起来看看:

  1、每个体系下面均有对应的系统调用列表:

  arch/arm/kernel/calls.S

  在添加一个新的系统调用标号

  CALL(sys_my_call)  //系统调用号366

  添加sys_my_call()

  在内核源代码的kernel目录下的sys.c中增加该系统调用函数接口:

  SYSCALL_DEFINE0(my_call)

  {

     printk("hello my_call!n");   //内核中的打印接口printk

  }


  备注:

  SYSCALL_DEFINE0 该宏用与定义一个不带参数的系统调用sys_xxx()

  SYSCALL_DEFINE1 该宏用与定义一个带一个参数的系统调用

  SYSCALL_DEFINEn


  2、修改系统调用函数声明文件:

  include/linux/syscalls.h

  添加新系统调用的声明

  asmlinkage long sys_my_call(void);


  3、添加新系统调用的调用号声明:

  arch/arm/include/asm/unistd.h

  添加新系统调用号的声明

  #define __NR_my_call   (__NR_SYSCALL_BASE + 366)


  4、重新编译内核并更换新内核。

  系统调用测试:

  编写应用程序

  sys_call.c

  #include <stdio.h>

  #include <linux/unistd.h>

  #include <sys/syscall.h>



  #define __NR_my_call   (__NR_SYSCALL_BASE + 366)

  int main(int argc, char **argv)

  {

      syscall(__NR_my_call);

      return 0;

  }


  交叉编译:

  arm-linux-gcc sys_call.c -o sys_call


  将交叉编译后的程序下载到开发板:

  使用CRT的串口传输功能:

  1、在进入开发板文件系统后,输入:

  rx sys_call

  并回车确认,选择下载到板子的应用程序,模式Xmodem

  2、下载成功后修改可执行属性:

  chmod 777 sys_call

  3、执行

       linux基础入门学习到粤嵌教育,教学课程涵盖了嵌入式基础、项目分析与立项、Linux核心操作与算法、嵌入式Linux系统编程开发、嵌入式GUI系统编程开发、ARM开发、嵌入式底层驱动开发、项目优化与验收再到就业与创业指导。  


    

免费预约试听课