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

author author     2023-04-27     463

关键词:

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

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

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

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

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

注意几点:

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

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

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

来测试。

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

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

这些变量和函数。

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

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

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

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

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

参考技术A 仿造之前内核自带

PayPal Express Checkout 调用不会在布局 C 中产生 BAID

】PayPalExpressCheckout调用不会在布局C中产生BAID【英文标题】:PayPalExpressCheckoutcalldoesnotproduceBAIDinLayoutC【发布时间】:2019-09-0316:09:25【问题描述】:对于他们的网络订阅服务,我的客户完全订阅了PaypalPaymentsPro(a.k.a.Payflow),并且... 查看详情

AVAudioPlayer 在 Swift 4.2 中产生延迟

】AVAudioPlayer在Swift4.2中产生延迟【英文标题】:AVAudioPlayerproduceslaginSwift4.2【发布时间】:2018-11-2316:20:33【问题描述】:是的,我不是第一个提出这个问题的人,但我发现的一切都像是4岁,我找不到解决这个问题的方法。可能我... 查看详情

Microsoft.Web.WebJobs.Publish 在部署包中产生重复的程序集

】Microsoft.Web.WebJobs.Publish在部署包中产生重复的程序集【英文标题】:Microsoft.Web.WebJobs.Publishproducingduplicateassembliesindeploypackage【发布时间】:2017-11-1918:01:13【问题描述】:我有大量AzureWebJobs,它们都部署到单个Azure应用服务,以... 查看详情

如何在haskell中产生无穷大?(代码片段)

与qazxswpoi相似......在C中,有HowtoproduceaNaNinHaskell宏定义的INFINITY宏。再次,在math.h,我可以看到测试无限的设施,但不能生成一个。因此,我唯一的选择是像http://hackage.haskell.org/package/ClassyPrelude-0.1/docs/Prelude-Math.html?答案1/0包具... 查看详情

MAX() 和 MAX() OVER PARTITION BY 在 Teradata 查询中产生错误 3504

】MAX()和MAX()OVERPARTITIONBY在Teradata查询中产生错误3504【英文标题】:MAX()andMAX()OVERPARTITIONBYproduceserror3504inTeradataQuery【发布时间】:2011-03-0700:13:43【问题描述】:我正在尝试生成一个结果表,其中包含每个课程代码的最后完成课程... 查看详情

对象创建在 oracle 中产生错误

】对象创建在oracle中产生错误【英文标题】:objectcreationgenerateserrorinoracle【发布时间】:2016-04-1307:58:13【问题描述】:我有这段代码,当我尝试编译它时,它给了我一个错误,说“名称已被现有对象使用”。但我没有另一个同名... 查看详情

在运行()中产生任务时Luigi中的TaskClassAmbigiousException

】在运行()中产生任务时Luigi中的TaskClassAmbigiousException【英文标题】:TaskClassAmbigiousExceptioninLuigiwhenyieldingtasksinrun()【发布时间】:2021-04-2411:26:09【问题描述】:我正在努力解决我不理解的Luigi错误。我不知道这是一个已知问题... 查看详情

Spring @Transactional 在 Hibernate 中产生问题

】Spring@Transactional在Hibernate中产生问题【英文标题】:Spring@TransactionalmakesproblemsinHibernate【发布时间】:2015-07-3014:17:46【问题描述】:我有一个Play项目,我在其中使用带有spring@Transactional注释的以下方法:@AutowiredHomehome;@Transactiona... 查看详情

具有常见图例的 ggarrange 在降价中产生额外的空白图

】具有常见图例的ggarrange在降价中产生额外的空白图【英文标题】:ggarrangewithcommonlegendproducesextrablankplotinmarkdown【发布时间】:2018-06-1609:26:13【问题描述】:我正在使用RNotebooks并且有一个包含一些用于排列直方图的代码的块。... 查看详情

在 n 成员数组中产生 m 成员组合

】在n成员数组中产生m成员组合【英文标题】:producingm-membercombinationinan-memberarray[duplicate]【发布时间】:2016-03-2710:47:54【问题描述】:我有一个包含n成员的数组。我还有另一个号码:m,(m<=n),由用户输入。现在我想在数组... 查看详情

画布签名触摸在 phonegap 中产生问题

】画布签名触摸在phonegap中产生问题【英文标题】:Canvassignaturetouchcreatesissueinphonegap【发布时间】:2014-03-0712:35:59【问题描述】:我发现了一些与“phonegap画布签名”相关的帖子,但它们没有帮助。我有一些下拉框、文本框和一... 查看详情

Mongoose 不会在 co 中产生 findeOne 结果

】Mongoose不会在co中产生findeOne结果【英文标题】:Mongoosedoesn\'tyieldfindeOneresultsinco【发布时间】:2016-10-1518:30:00【问题描述】:我正在使用co和mongoose,我希望我的异步代码看起来更“同步”,并且-据我所知-co库允许我在另一个中... 查看详情

TelemetryClient 在 Application Insights 中产生不一致的结果

】TelemetryClient在ApplicationInsights中产生不一致的结果【英文标题】:TelemetryClientproducesinconsistentresultsinApplicationInsights【发布时间】:2017-10-0303:33:08【问题描述】:我尝试在有和没有刷新的情况下跟踪自定义指标。但是,这些指标... 查看详情

T-SQL为啥除以零不会在order by子句中产生错误

】T-SQL为啥除以零不会在orderby子句中产生错误【英文标题】:T-SQLWhydivisionbyzerodoesnotgeneratederrorintheorderbyclauseT-SQL为什么除以零不会在orderby子句中产生错误【发布时间】:2013-03-2916:02:40【问题描述】:我在一个程序中发现了一些... 查看详情

python列表理解在一次迭代中产生两个值

】python列表理解在一次迭代中产生两个值【英文标题】:pythonlistcomprehensiontoproducetwovaluesinoneiteration【发布时间】:2013-05-1118:53:38【问题描述】:我想在python中生成一个列表如下-[1,1,2,4,3,9,4,16,5,25.....]你会发现,这不过是n,n*n我尝... 查看详情

使用 SQL 创建查询哪个网格位置在商店中产生最多收入

】使用SQL创建查询哪个网格位置在商店中产生最多收入【英文标题】:UsingSQLtocreateaqueryofwhatgridlocationgeneratesthemostincomeinashop【发布时间】:2019-12-1909:50:56【问题描述】:我是SQL和数据库的新手,我已经为商店创建了一个基本数据... 查看详情

rand 函数是不是在 MATLAB/Octave 中产生 0 或 1 的值?

】rand函数是不是在MATLAB/Octave中产生0或1的值?【英文标题】:Doestherandfunctioneverproducevaluesof0or1inMATLAB/Octave?rand函数是否在MATLAB/Octave中产生0或1的值?【发布时间】:2015-07-0101:22:07【问题描述】:我正在寻找一个能够在0和1之间生... 查看详情

python在蟒蛇中产生诗歌(代码片段)

查看详情