ARM架构下添加系统调用(与32位x86区别)

发布者:HarmonySpirit最新更新时间:2024-09-30 来源: cnblogs关键字:ARM架构  系统调用 手机看文章 扫描二维码
随时随地手机看文章

在这两种架构下添加系统调用的步骤是类似的,简要地比较一下,以2.6.28.6内核为例。


1.在内核源码相应位置(如sys.c或其他与这个函数联系紧密的文件)添加新的内核函数作为系统调用,形如


asmlinkage long sys_foo(void) {

}


2.加入系统调用表。ARM架构存放于/arch/arm/kernel/call.S中,形如CALL(sys_foo);x86架构放于/arch/x86/kernel/syscall_table_32.S中,形如.long sys_foo。


3.定义系统调用号。ARM架构存放于/arch/arm/include/asm/unistd.h中,形如


#define __NR_foo (__NR_SYSCALL_BASE+361);


x86架构放于/arch/x86/include/asm/unistd_32.h中,形如


#define __NR_foo 333


4.使用方法:编译修改后的内核,在用户空间中使用syscall()调用。


关键字:ARM架构  系统调用 引用地址:ARM架构下添加系统调用(与32位x86区别)

上一篇:交叉编译生成模块的makefile写法
下一篇:linux4.1.36 2440 启用 RTC 支持

推荐阅读最新更新时间:2026-03-20 12:07

ARM架构下添加系统调用32位x86区别
  在这两种架构下添加系统调用的步骤是类似的,简要地比较一下,以2.6.28.6内核为例。   1.在内核源码相应位置(如sys.c或其他与这个函数联系紧密的文件)添加新的内核函数作为系统调用,形如 asmlinkage long sys_foo(void) { }   2.加入系统调用表。ARM架构存放于/arch/arm/kernel/call.S中,形如CALL(sys_foo);x86架构放于/arch/x86/kernel/syscall_table_32.S中,形如.long sys_foo。   3.定义系统调用号。ARM架构存放于/arch/arm/include/asm/unistd.h中,形如   
[单片机]
浅析Arm Linux操作系统调用流程详细解析
At91rm9200处理器对应的linux2.4.19内核系统调用对应的软中断定义如下: #if defined(__thumb__) //thumb模式 #define __syscall(name)/ push {r7}/n/t / mov r7, # __sys1(__NR_##name) /n/t / swi 0/n/t / pop {r7} #else //arm模式 #define __syscall(name) swi/t __sys1(__NR_##name) /n/t #endif #define __sys2(x) #x #define __
[单片机]
linux内核中的dup系统调用
内核版本:2.6.14 dup系统调用的服务例程为sys_dup函数,定义在fs/fcntl.c中。sys_dup()的代码也许称得上是最简单的之一了,但是就是这么一个简单的系统调用,却成就了linux系统最著名的一个特性:输入/输出重定向。sys_dup()的主要工作就是用来 复制 一个打开的文件号,并使两个文件号都指向同一个文件,下面我们来分析一下它的代码。 1.sys_dup源码分析 view plain copy print ? asmlinkage long sys_dup(unsigned int fildes)//sys_dup函数的参数,即fildes,是文件描述符fd {
[单片机]
ARM linux系统调用的实现原理
  大家都知道linux的应用程序要想访问内核必须使用系统调用从而实现从usr模式转到svc模式。下面咱们看看它的实现过程。   系统调用是os操作系统提供的服务,用户程序通过各种系统调用,来引用内核提供的各种服务,系统调用的执行让用户程序陷入内核,该陷入动作由swi软中断完成。   at91rm9200处理器对应的linux2.4.19内核系统调用对应的软中断定义如下:   #if defined(__thumb__) //thumb模式   #define __syscall(nAME) \\   "push {r7} \\t" \\   "mov r7, #" __sys1(__NR_##name) " \\t"
[单片机]
单片机系统中Web Service的调用方法研究
1 前言 Web Service作为一种有着强大功能的可互操作性和扩展性的新技术,被越来越多用于异构数据的集成,自然想到将其应用于工业数据采集系统的异构数据的集成.本文介绍了一种在单片机系统中调用Web Service实现主动提交数据的方法,方便了数据采集系统的集成.在传统的数据采集系统中,可以利用单片机系统用串口方式采集仪表数据,通过串行总线将数据提交给上位计算机,通过预先设计的通信协议与上位采集服务器通信,集成采集的数据.当需要增加下位机采集模块时需要扩展对应的上位机采集口,采集系统的升级和维护都非常麻烦.在单片机系统中通过调用采集服务器端的Web Service和上位机交互数据,可以简化下位机和上位机的通信,把主要工作放在
[单片机]
单片机<font color='red'>系统</font>中Web Service的<font color='red'>调用</font>方法研究
Linux内核服务例程与系统调用接口
  1.用宏生成系统调用例程   高级语言应用程序一般不能直接访问内核函数。但是,总还是有一些高级用户需要访问内核函数,如果让用户自己编写汇编语言程序来实现内核的陷入,显然是不合适的,因为它既不安全也不符合设置操作系统的初衷___为用户提供一个友好的程序设汁平台。   由于用于封装内核服务例程的系统调用例程有一个固定的框架,所以为了简化对内核服务例程的封装工作,Linux定义了从_sysca110~_sysca115的6个宏,高级用户可使用这些宏把所需的内核服务例程封装为系统调用例程。   上述这6个宏的名称后的数字表示被封装的内核服务例程可使用的参数个数(系统调用号除外)。在上述宏对内核服务例程进行封装时,Linux规定
[嵌入式]
ARM架构芯片硬件与软件构成深度解析
在现代电子设备的核心中,ARM架构芯片以其高效能、低功耗的特点占据了举足轻重的地位。从智能手机到平板电脑,从汽车娱乐系统到工业控制设备,ARM架构芯片无处不在。本文将深入探讨一颗ARM架构芯片的硬件和软件构成,以期为读者提供一个全面的理解。 一、ARM架构芯片硬件构成 ARM架构芯片的硬件构成复杂而精密,主要包括内核、外设、总线、存储部件等多个部分。这些部分协同工作,共同支撑起芯片的强大功能。 1.1 内核 ARM架构芯片的内核是芯片的核心部分,主要由寄存器、指令集、总线、存储器映射规则、中断逻辑和主调试组件构成。ARM公司设计并授权这些内核给芯片厂商,而芯片厂商则根据这些内核设计并生产具体的芯片产品。 ARM内核按照性能和应
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved