linux系统调用书写

linux系统编程之系统调用 系统编程概述 操作系统的职责 操作系统用来管理所有的资源,并将不同的设备和不同的程序关联起来 什么是linux系统编程 在有操作系统的环境下编程,并使用操作系统提供的系统调用及各种库,对系统资源进行访问,学会了c语言再知道一些系统调用的方法,就可以进行linux系统编程了 系统编程概述 主要就是为了让用户能够更好的和更方便的操作硬件设备,并且对硬件设备也起到保护作用,我们所写的程序,本质就是对硬件设备的操作,所以操作系统提供接口,可以对硬件进行操作,这就是系统编程 系统调用概述 本质都是对硬件设备的操作. 阅读详情

操作环境

 系统版本:Ubuntu12.04.5
 内核版本:Linux3.3.8

何为系统调用

它是内核层暴露给用户层的一组接口
但与应用接口API的存在一定的区别  
应用接口API仅仅为一组函数声明
而系统调用则是通过软中断向内核发出请求

系统调用的组成

系统调用名的声明
在linux-3.3.8/arch/x86/syscalls/目录下
x86 : 根据你的处理器选择目录进入
    我的处理器为x86的 所以进入此目录
有五个文件 选择我们需要的说 
syscall_64.tbl 
    如果是32位操作系统,打开syscall_32.tbl
以下为文件内容
系统调用号  处理器类型  用户层函数名  内核层函数名
如:
    0         64       read       sys_read
内核版本不同系统调用的数量也会有些许的差异
本机系统调用一共有312个(0 ~ 311)
系统调用的声明
在linux-3.3.8/include/linux/目录下
打开syscalls.h的头文件
文件内容为内核数据结构的声明和系统调用的声明还有宏函数的实现
我们在#endif的上面添加自己的系统调用的声明
如:
    asmlinkage long sys_test(int number)
实现系统调用
 在linux-3.3.8/的目录下创建一个文件夹test/
 在文件夹内部创建test.c 和 Makefile文件
 在test.c里实现我们的系统调用
 #include <kernel.h>//test.c
 asmlinkage long sys_test(int number)
 {
    printk(KERN_ERR"called sys_test %d",number);
    return 0;
 }
 在当前文件夹下的Makefle文件中添加如下内容
obj-y := test.o
 在等号之后以.o的形式写你需要的.c文件
 返回linux-3.3.8/目录后修改此文件夹下的Makefile文件
core-y  :=  usr/  test/
 在core后添加你在linux-3.3.8/目录下添加的目录
 修改完毕后进行编译即完成自己的系统调用书写

使用系统调用

在应用层调用系统调用
前面我们已经在内核层实现了我们的系统调用
接着我们就要在应用层来调用它
下面为系统调用的接口
syscall(n,perm1,perm2);
 n为我们在syscall_64.tbl中的系统调用号,之后为系统调用的参数表
编写函数来调用syscall
#include <stdio.h>
#include <sys/syscall.h>

int main(void){
    int rc = 0,number = 5;
    rc = syscall(312,number);
    return rc;
}
【Linux系统调用】汇编级理解Linux系统调用 通过gdb对linux内核执行过程进行调试,单步执行,分析Linux系统调用过程保存现场,恢复现场和调用返回过程中堆栈和寄存器的变化 阅读详情

相关推荐

Linux常用系统调用手册

很好用的全中文自分类Linux系统调用,忘了就查阅一下,非常方便。

【Linux】Linux系统调用函数(300多个)

一、初级I/O函数二、文件管理操作函数三、标准I/O函数四、格式化输入输出函数五、进程控制六、进程间通信函数七、信号函数八、用户、组函数及环境变量函数九、错误处理与内存分配函数十、日志函数、动态函数与正则表达式函数十一、时间函数十二、socket相关函数十三、字符测试函数十四、数据转换函数十五、字符串处理函数十六、数学计算函数十七、随机数及数据加密函数十八、数据结构函数十九、其他函数

crr411422的博客 6116

Linux 系统函数调用大全

linux系统函数调用大全,包括接口处理,内存操作,内存控制,数据结构及算法,文件操作,文件权限控制,信号处理,终端控制以及用户组等等实用函数。

Linux 系统调用

在sys.c文件中添加下面函数\n");return 0;注:可以参照其他syscall写法,如果传递1个参数,就使用SYSCALL_DEFINE1,以此类推对于ARM架构,系统调用号文件位于注意:需要将__NR_syscalls 也同步增加。

Sofine 1397

linux系统调用手册

有关系统调用手册的linux内部资料~一些系统调用的内建函数~

告别Root!用Termux+ADB在Android上玩转自动化(保姆级教程)

本文详细介绍了如何在非Root环境下使用Termux和ADB实现Android自动化操作,无需Root权限即可运行自动化脚本。通过Termux搭建Linux终端环境,结合ADB无线调试和Python脚本,实现点击、滑动、截图等自动化功能,适用于定时任务、自动签到等场景。

weixin_42548888的博客 542

Linux内核:系统调用大全(持续更新中)

1. sys_brk()是用于更改进程的堆空间大小。 2. dup2用于创建一个新的文件描述符,这个新的文件描述符与指定的旧文件描述符指向同一个文件.

李白 1402

Remosaic 算法

在 4in1 传感器中,相邻的 4 个同色像素(如 4 个红色、绿色或蓝色像素)合并为 1 个“超级像素”,以提升低光环境下的感光能力。例如,在 RGGB 排列中,每个 2x2 的 Quad 单元需要恢复为 4 个独立的 R、Gr、Gb、B 像素1。:传感器通过硬件级 Remosaic 直接输出 4800 万像素的原始数据,每个像素独立记录颜色信息,解析力更高2。:传感器仅输出 1200 万像素数据,再通过软件算法插值放大到 4800 万像素,实际解析力无本质提升2。的原始数据转换为传统。

Damon_X的博客 3730

【linux】系统调用的基本原理及实现(二)

linux syscall系统调用之二

种一棵树最好的时间是十年前,其次是现在 504

VScode+MPLAB AI助手:Microchip MCU开发全流程实战解析

本文详细解析了如何使用VScode搭配MPLAB AI助手进行Microchip MCU开发的完整流程。从环境配置、工程创建到代码生成与调试,全面介绍了AI助手在提升开发效率、优化代码和故障排除方面的实际应用,为嵌入式开发者提供了一套高效的开发解决方案。

hh234的博客 1132

【Apollo规划模块探秘】—— 场景(Scenario)驱动的决策引擎

本文深入解析了Apollo自动驾驶平台规划模块的核心机制——场景(Scenario)驱动的决策引擎。文章通过类比日常驾驶,阐述了规划模块如何像经验丰富的司机一样,根据不同的路况(如车道跟随、无保护左转)切换不同的“驾驶模式”。重点剖析了场景管理器(ScenarioManager)如何基于感知信息进行场景判断与切换,以及“场景-阶段-任务”双层状态机如何精密协作,实现灵活、高效且安全的轨迹规划。

rnn9storyteller的博客 279

syscall——使用系统调用

目录函数说明参考 函数说明 NAME syscall - indirect system call SYNOPSIS #define _GNU_SOURCE /* See feature_test_macros(7) */ #include <unistd.h> #include <sys/syscall.h> /* For SYS_xxx definitions */ long sysc

HideOnLie的博客 1254

代谢组数据分析(零):从质谱样本制备到MaxQuant搜库(蛋白质组和代谢组)

本文详细介绍了代谢组数据分析的过程,从LC-MS/MS技术的样本制备、分离、质谱鉴定到MaxQuant软件的使用。LC-MS/MS包括样本制备、液相色谱分离、质谱上机和鉴定等步骤。MaxQuant在蛋白质定性和定量中扮演关键角色,通过搜库和数据处理提供精准结果。此外,文章还涉及了数据采集模式、质谱图谱解析、数据库和软件选择以及结果评估等方面

专注生信领域 8593

【Linux】Linux系统调用

>- **操作系统**——管理计算机硬件与软件资源的软件,是用户和系统交互的操作接口,为它上面运行的程序提供服务。 >- **操作系统内核**——操作系统的内核,负责管理系统的进程、内存、设备驱动程序、文件和网络系统。一个内核不是一套完整的操作系统。例如Linux。 >- **Linux操作系统**——基于Linux内核的操作系统。通常由Linux内核、shell(特殊的应用程序,提供运行其他程序的接口)、文件系统和应用程序组成。常见的有:Redhat、Fedora、Centos、Ubuntu和Androi

半生瓜のblog 4626

Open3D DBSCAN聚类

DBSCAN算法做为一种有名的密度聚类算法,它是通过邻域参数(Distance,MinPts)来刻画样本分布的紧密程度。而在真正开始之前,首先要理解下面这几个概念:更为具体的内容也可参考这篇文章点云DBSCAN聚类算法。...

dayuhaitang1的博客 1801

麻辣香锅病毒分析

Spicy Hot Pot浏览器劫持病毒(麻辣香锅病毒)从2020年初被安全公司监测到,因其病毒模块带有MLXG_KM被安全行业代称麻辣香锅病毒。目前通过各种激活工具传播, 包括暴风激活、小马激活和KMS激活等诸多工具,疑似与下载站进行合作推广此类激活工具。Spicy Hot Pot 是一个浏览器劫持 Rootkit,它会将用户的主页更改为指向恶意软件操作员控制的页面,此外还会将内存转储从机器上传到预定义的服务器,并结合本地更新功能以确保其保持更新。通常浏览器劫持者会通过更改用户主页的恶意可执行文件或注册表

不忘初心,护天下安全! 4794

Linux系统调用

系统调用 系统调用是用户空间访问内核的唯一手段;除了异常和陷入外,他们是内核唯一的合法入口。 系统调用主要是为用户空间提供一种硬件的抽象接口,保证系统的稳定与安全,为应用程序实现多任务和虚拟内存提供接口。要访问系统调用,通常通过C库中定义的函数调用来进行。大多数系统调用都会产生某种副作用(使系统的状态发生某种变化)。 getpid()系统调用的内核实现为:SYSCALL_DEFINE0(getpid) { return task_tgid_vnr(current);} 而只是一个宏,定义了一个无参数

qq_38107043的博客 6728

Grafana 可视化配置

Grafana 可视化操作使用

原名又逢乱世。不要放下学习的脚步,毕竟比天天打牌、钓鱼、打游戏更能从内在充实自己。 1942

Linux | 系统调用

在Linux系统中,系统调用是用户空间程序与内核进行交互的桥梁,用户程序通过系统调用请求内核提供的服务。下面将详细介绍。

TTKunn的博客 1879

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Linux系统调用的详解

操作系统- 管理计算机硬件与软件资源的软件,是用户与系统交互的操作接口,为它上面运行的程序提供服务。操作系统内核- 操作系统的核心。负责管理系统的进程、内存、设备驱动程序、文件和网络系统。一个内核不是一套完整的操作系统,如Linux。Linux操作系统- 基于Linux内核的操作系统。通常由Linux内核、shell(特殊的应用程序,提供运行其他程序的接口)、文件系统和应用程序。常见的有Redhat、FedoraCentosUbuntu和Android等。

m0_65635427的博客 1755

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Linux系统调用号列表、系统调用的三种方式

文章目录Linux系统调用号什么是Linux系统调用号系统调用的三种方式参考 Linux系统调用号 什么是Linux系统调用号 在Linux中,每个系统调用被赋予一个系统调用号。这样,**通过独一无二的号就可以关联系统调用。**当用户空间的进程执行一个系统调用的时候,这个系统调用号就用来指明到底是要执行哪个系统调用; 系统调用号相当重要,一旦分配就不能再又任何变更,否则编译好的应用程序就会崩溃。此外,如果一个系统调用被删除,它所占用的系统调用号也不允许被回收利用,否则,以前编译过的代码会调用这个系统调用,但

西京刀客 5622

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

linux系统调用的三种方法

系统调用(System Call)是操作系统为在用户态运行的进程与硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口。当用户进程需要发生系统调用时,CPU 通过软中断切换到内核态开始执行内核系统调用函数。 下面介绍Linux 下三种发生系统调用的方法: 1、通过 glibc 提供的库函数: glibc 是 Linux 下使用的开源的标准 C 库,它是 GNU 发布的 libc 库,即运行时库。glibc 为程序员提供丰富的 API(Application Programming Interfa

赶路人儿 4449

linux系统调用

本文不过多赘述。

dmf_fff的博客 953
上一篇: Linux安装启动过程
下一篇: Kmap
code__L
博客等级 码龄10年 3粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值