导航:首页 > 操作系统 > linux增加系统调用

linux增加系统调用

发布时间:2023-11-16 14:28:05

‘壹’ 在linux中产生一个系统调用以及怎样通过往Linux内核中增加一个新函数从而在该内核

若要在kernel里面新增加一个自己的syscall,大致需要这么几个步骤:

a,新增自己syscall的代码,并修改相应makefile;

b,修改相应头文件,分配自己的系统调用号;

c,系统调用通过中断加查表的方式实现,所以需要在系统调用表里面增加相关的项目,这需要修改相关的汇编源文件;

d,重新编译内核,并写测试程序测试新增的syscall;

注意几点:

1,上述步骤所要修改的文件/位置等对不同处理器架构来说,不尽相同;

2,对于应用层的测试代码来说,在2.6.20版本之前,可以使用相应的_syscallN宏;

但是2.6.20版本后,这些宏已经被从kernel中去掉了,你需要使用应用层的syscall函数

来测试。

你可以在自己的syscall实现文件中加上EXPORT_SYMBOL/EXPORT_SYMBOL_GPL

等宏来导出你的全局变量或者函数,导出后,另外的模块或者其他内核代码就可以使用

这些变量和函数。

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

杭州巨立安(JulianTec)是杭州市场上

唯一由资深研发工程师所创办的机构。所以:

就专业程度和实在程度而言,杭州巨立安(JulianTec)

是您在arm架构下学习嵌入式Linux研发的上佳指导!

‘贰’ linux系统中,有哪些系统调用的函数

Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions)。系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底层调用的意思。面向的春蠢仔是档猜硬件。而库函数调用则面向的是应用开发的,相当于扒汪应用程序的api...

‘叁’ 如何实现一个新的linux系统调用

若要在 kernel 里面新增加一个自己的 sys call,大致需要这么几个步骤: a,新增自己 sys call 的代码,并修改相应 makefile; b,修改相应头文件,分配自己的系统调用号; c,系统调用通过中断加查表的方式实现,

‘肆’ linux疑问:route 命令查看 Linux 内核路由表 UG是何意

1、下载一个Linux内核源代码文件,将它保存到虚拟机上新安装的系统中去。并解压到/usr/src目录。

‘伍’ 使用mmap(linux系统调用)追加文件内容

如果你想体验Linux系统,我觉得最好的办法是安装了Linux操作系统,再好的园林绿化,仿真工具不能让你真正体验到了Linux的真正威力。一般可以安装Vista系统的配置非常高,可以安装虚拟机软件的Windows平台,虚拟机内安装了Linux系统。在这种情况下,有一个完整的Linux系统(带独立的桌面环境,文件系统,内存空间等,和一台电脑没有区别),而要像在Windows下运行的Windows应用程序,不会将您的Windows产生任何危害。
常见的虚拟机软件Vmware的,现在最新的版本是6.0,很不错,推荐,以及微软的VirtualPC,功能也很不错,但我还没有用完。

‘陆’ linux下系统调用函数read()

open系统调用

open函数的三个参数:

(1)path是已经存在的文件的路径;

(2)oflags参数:若值为 O_RDONLY ,就以只读方式打开文件;

若值为 O_WDONLY,就以只写方式打开文件;

若值为 O_RDWR,就以读写方式打开文件;

(3)参数mode:文件的权限,对于一个已经存在的文件,参数mode是没有用的,通常将其省略,因此这种情况下open调用只需两个参数。

创建新文件:

前面已经说到,当文件不存在时,open会创建一个新文件(仅能是普通文件),我们只需要用 or操作向open的 oflags参数中加入标志O_CREAT即可。这样可以创建一个新的只读文件,但是这没有任何意义,因为所创建的新文件没有任何可读内容。因此一般需要 O_CREAT与 O_WRONLY或 O_RDWR一起使用,此时就需要mode参数了。

例如:

int fd = open("/home/LY/newfile",O_RDWR | O_CREAT,MODE_FILE)

参数mode仅在创建新文件时有效,对于一个已经存在的文件,它没有任何作用。

关于open的flags参数:

除了以上介绍的 open标志外,open还有许多标志,具体的如下表所示:

标志

解释

O_RDONLY

只读方式打开

O_WRONLY

只写方式打开

O_RDWR

读写方式打开

O_APPEND

每次写都追加到文件的尾端

O_CREAT

若文件不存在则创建文件

O_DSYNC

设置同步I/O方式

O_EXCL

如果文件已存在,则出错;必须与O_CREAT一起使用

O_NOCTTY

不将此设备作为控制终端

O_NONBLOCK

不等待命名管道或特殊文件准备好

O_RSYNC

设置同步I/O方式

O_SYNC

设置同步I/O方式

O_TRUNC

将其长度截短为0

write系统调用

write函数的三个参数:

(1)fildes: 文件描述符
(2)buf:指定写入数据的数据缓冲区
(3)nbytes:指定写入的字节数

函数返回值:

成功:已写的字节数

-1 :出错

0:未写入任何数据

例子:

运行结果:

read系统调用

read函数的三个参数:

(1)fildes:文件描述符

(2)buf:指定读入数据的数据缓冲区

(3)nbytes:指定读入的字节数

函数返回值:

成功:已读的字节数

0:未读入任何数据

-1:出错

例子:

运行结果:

close系统调用

通过对 close进行分析,我们会发现close并没有做什么实质工作,它没有刷新任何内核缓冲区,而仅仅是使文件描述符可以重用。

阅读全文

与linux增加系统调用相关的资料

热点内容
苹果手机相册文件夹如何清理 浏览:390
服务器云电脑搭建教程 浏览:405
eco怎么搭建服务器 浏览:464
周转材料核算法 浏览:354
学nodejs还是php好 浏览:275
电信营业厅app怎么买q币 浏览:917
linux退出登陆 浏览:534
python查找相似图片的代码 浏览:335
赵丽pdf 浏览:659
如何苹果手机app不要自动更新 浏览:978
pythonflask路线教程 浏览:256
程序员职业有哪些好处 浏览:711
大都会软件app如何扫码 浏览:436
单片机0x38 浏览:756
程序员浪漫工作 浏览:330
php几分钟前 浏览:308
项目编译及运行 浏览:895
程序员的基本功 浏览:524
遗传算法排班 浏览:291
如何加密金融安全网 浏览:32