linux4.0新增32位ARM的系统调用

news2025/2/27 4:46:00

修改内核源码 

Linux系统为每一个系统调用赋予一个系统调用号。当应用程序执行一个系统调用时,应用程序就可以知道执行和调用到哪个系统调用了,从而不会造成混乱。系统调用号一旦分配之后就不会有任何变更,否则已经编译好的应用程序就不能运行了。对于ARM32系统来说,其系统调用号定义在arch/arm/include/uapi/asm/unistd.h头文件中。

添加的内容:arch\arm\include\uapi\asm\unistd.h文件

#define __NR_lkmao_hello		(__NR_SYSCALL_BASE+388)

 修改文件:arch\arm\include\asm\unistd.h

vi arch/arm/include/asm/unistd.h

/*
 * This may need to be greater than __NR_last_syscall+1 in order to
 * account for the padding in the syscall table
 */
//#define __NR_syscalls  (388)//原来的值
#define __NR_syscalls  (392)//修改后的值

修改文件kernel/sys.c,添加内容

 vi kernel/sys.c 

SYSCALL_DEFINE0(lkmao_hello)
{
	printk("%s:%s:%d -- sys_lkmao_hello is called\n",
		__FILE__,__func__,__LINE__);
	return 0;
}

修改文件include/linux/syscalls.h,添加如下内容:

asmlinkage long sys_hello_lkmao(void);

修改系统调用表,修改文件arch/arm/kernel/calls.S,添加CALL(sys_lkmao_hello)

修改的文件统计

1 arch/arm/include/uapi/asm/unistd.h

2 arch/arm/include/asm/unistd.h

3 kernel/sys.c

4 include/linux/syscalls.h

5 arch/arm/kernel/calls.S

 应用测试代码

#define _GNU_SOURCE         /* See feature_test_macros(7) */
#include <stdio.h>
#include <unistd.h>
#include <sys/syscall.h>   /* For SYS_xxx definitions */

#define DEBUG_INFO(format, ...) printf("%s:%d -- "format"\n",\
__func__,__LINE__,##__VA_ARGS__)

#define __NR_lkmao_hello 388

int main(int argc, char**argv){
    int ret = syscall(__NR_lkmao_hello);
    DEBUG_INFO("ret = %d\n", ret);
    return 0;
}

编译代码测试

在系统调用中打印PID和UID

在kernel/sys.c文件中,修改SYSCALL_DEFINE0(lkmao_hello)的定义,如下所示,修改后重新编译内核。


SYSCALL_DEFINE0(lkmao_hello)
{
	const struct cred *cred = current_cred();
	printk("%s:%s:%d -- sys_lkmao_hello is called\n",
		__FILE__,__func__,__LINE__);



	printk("%s:%s:%d -- pid = %d,%d,uid = %d\n",
		task_pid_nr(current),
		task_pid_nr_ns(current),
		cred->uid;,
		__FILE__,__func__,__LINE__);
	return 0;
}

 测试结果

 

小结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/862698.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10个牛逼的编程范式,你已经用过了几个?

《10个牛逼的编程范式&#xff0c;你已经用过了几个&#xff1f;》 编程范式是计算机编程中的基本思想和方法论&#xff0c;它描述了不同的编程风格和抽象层次。随着计算机科学的不断发展&#xff0c;编程范式也在不断演进和扩展&#xff0c;从最早的命令式编程到面向对象、声明…

VTK学习笔记(二十一)

显示立方体已经做过了&#xff0c;现在想简单处理一下立方体&#xff0c;比如每个面上增加一些文字。效果如下。 #include <vtkAnnotatedCubeActor.h> #include <vtkCamera.h> #include <vtkNamedColors.h> #include <vtkNew.h> #include <vtkPrope…

连续两年增收不增利,比亚迪电子靠新能源汽车业务再次起飞?

在净利润连续两年下挫之后&#xff0c;比亚迪电子&#xff08;00285.HK&#xff09;终于迎来了好消息。 不久前比亚迪电子发布2023年中期盈利预告显示&#xff0c;上半年净利润同比增加115%-146%&#xff08;2022年上半年的净利润显示6.34亿元&#xff09;。 这主要受益于大客…

H5 防止安卓手机软键盘弹出挤压页面导致变形的方法

一、问题&#xff1a; 在做移动端h5页面时&#xff0c;安卓端软键盘会导致页面压缩变形的问题&#xff1a;&#xff08;安卓端有问题&#xff0c;IOS端没问题&#xff09; 二、原因分析 安卓端&#xff1a;安卓中&#xff0c;如果将footer元素设置为position:fixed或absolute&…

FlashAttention

一、 论文题目&#xff08;发表处-时间&#xff09; FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness 二、主要方向 新型注意力机制 三、细化任务 一种具有 IO 感知&#xff0c;且兼具快速、内存高效的新型注意力算法 四、论文动机 一般对…

DQNs【Vanilla DQN Double DQN Dueling DQN】

DQNs 文章目录 DQNs1. DQN及其变种介绍1.1 Vanilla DQN1.2 Double DQN1.3 Dueling DQN 2. Gym环境介绍2.1 Obseravtion Space2.2 Reward Function2.3 Action Space 3. DQNs Code3.1 Vanilla DQN效果3.2 Double DQN效果3.3 Dueling DQN效果 Reference ​ 在 Reinforcement Lear…

14 | 菜品订单分析

本次研究将以菜品订单分析为主题,探讨如何从订单数据中获取有价值的见解。我们将借助数据分析技术,深入研究菜品的销售情况、客户的点餐偏好、订单的时间分布等方面,从而帮助餐厅更好地了解消费者需求,优化经营策略,提升客户体验。通过对菜品订单数据的深入分析,我们可以…

移动电子商务多用户B2B2C商城系统开发

多用户B2B2C商城pc端区块链应用开发的数据运营是为了更好地利用数据&#xff0c;提高商城的运营效率和用户体验。以下是数据运营的六个步骤&#xff1a; 数据采集 数据采集是数据运营的基础。在商城开发过程中&#xff0c;需要采集用户数据、交易数据、商品数据等。这些数据可…

APP备案明明是好事,为啥有些人反对呢?

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; APP和小程序备案&#xff0c; 这事在网上闹的沸沸扬扬&#xff0c;明明是好事&#xff0c;可为啥那么多人反对呢?而且最近出现了好多阴阳怪气的声音。 话说从2005年3月起&#xff0c;国内所有的网…

linux 查询后台任务及杀掉进程

查看后台任务命令 jobs -l删除后台进程命令 kill -9 28719

Linux 发行版 Debian 12.1 发布

导读在今年 6 月初&#xff0c;Debian 12“bookworm”发布&#xff0c;而日前 Debian 迎来了 12.1 版本&#xff0c;主要修复系统用户创建等多个安全问题。 Debian 是最古老的 GNU / Linux 发行版之一&#xff0c;也是许多其他基于 Linux 的操作系统的基础&#xff0c;包括 Ub…

本地oracle登录账号锁定处理,the account is locked

1.打开cmd命令窗口 2.打开sqlplus: sqlplus /nolog(加/nolog是不登录服务器的意思&#xff0c;不加就需要输账号密码) 3.切换到管理员&#xff1a;conn / as sysdba; 第2步第3步可以合并&#xff0c;直接使用sysdba登录&#xff1a;sqlplus / as sysdba; 4.解锁账号&#x…

【BASH】回顾与知识点梳理(二十一)

【BASH】回顾与知识点梳理 二十一 二十一. Linux 的文件权限与目录配置21.1 使用者与群组属主(文件拥有者)属组(群组概念)其他人的概念root(万能的天神)Linux 用户身份与群组记录的文件 21.2 Linux 文件权限概念Linux 文件属性Linux 文件权限的重要性 21.3 如何改变文件属性与权…

数字孪生三剑客来了!MapGIS Earth for Unreal的自述

嗨&#xff0c;大家好&#xff01;我的名字叫MapGIS Earth for Unreal&#xff0c;是MapGIS数字孪生平台产品家族的一员。提起我&#xff0c;大家可能不熟悉&#xff0c;但是提起数字孪生&#xff0c;想必大家倍感兴趣。 数字孪生是充分利用物理模型、传感器更新、运行历史等数…

ApacheCon - 云原生大数据上的 Apache 项目实践

Apache 软件基金会的官方全球系列大会 CommunityOverCode Asia&#xff08;原 ApacheCon Asia&#xff09;首次中国线下峰会将于 2023 年 8 月 18-20 日在北京丽亭华苑酒店举办&#xff0c;大会含 17 个论坛方向、上百个前沿议题。 字节跳动云原生计算团队在此次 CommunityOve…

微信公众号模板消息推送测试Python版无需服务器-保姆级教程

手上有个项目&#xff0c;是服务器挂着自动化的爬虫的&#xff0c;但我用的那个IP代理商没有用尽报警&#xff0c;导致几次IP用尽&#xff0c;程序爬不到数据&#xff0c;进程死循环了。之前想过发邮箱提醒我&#xff0c;但是邮箱把又不及时&#xff0c;老忘记看&#xff0c;因…

QGIS开发五:VS使用QT插件创建UI界面

前面我们说了在创建项目时创建的是一个空项目&#xff0c;即不使用 Qt 提供的综合开发套件 Qt Creator&#xff0c;也不使用 Qt Visual Studio Tools 这类工具。 但是后面发现&#xff0c;如果我想要有更加满意的界面布局&#xff0c;还是要自己写一个UI文件&#xff0c;如果不…

Jmeter设置中文的两种方式,建议使用第二种

方案一 进入jmeter图像化界面&#xff0c;选择Options下的Choose Language&#xff0c;再选择Chinese(Simplified)。这个就是选择语言为简体中文&#xff08;缺陷&#xff1a;这个只是在本次使用时为中文&#xff0c;下次打开默认还是英文的&#xff09; 方案二&#xff08;…

c++11 标准模板(STL)(std::basic_fstream)(四)

定义于头文件 <fstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_fstream : public std::basic_iostream<CharT, Traits> 类模板 basic_fstream 实现基于文件的流上的高层输入/输出。它将 std::basic_i…

超快软恢复二极管的特点与应用,你必须看的好文章~

什么是超快软恢复二极管&#xff1f; 超快软恢复二极管&#xff08;Ultrafast Soft Recovery Diode&#xff09;是一种特殊的二极管&#xff0c;它具有较快的恢复速度和较低的反向恢复电荷。它通常用于高频开关电路和电源应用中&#xff0c;以提高效率和降低开关损耗。 超快软…