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中,形如

  

#define __NR_foo (__NR_SYSCALL_BASE+361);

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

#define __NR_foo 333

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

posted @   五岳  阅读(1175)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
回到顶部
点击右上角即可分享
微信分享提示