goto语句在linux下使用,linux内核或驱动中goto语句的用处-程序员宅基地

技术标签: goto语句在linux下使用  

在linux内核中goto出现的频率很高,书上说是考虑到内核的执行效率。

但在下面的函数中,如果将goto换成return,那不更直接?

请大虾指教!

asmlinkage int sys_execve(struct pt_regs regs)

{

int error;

char * filename;

filename = getname((char *) regs.ebx);

error = PTR_ERR(filename);

if (IS_ERR(filename))

goto out;

error = do_execve(filename, (char **) regs.ecx, (char **) regs.edx, &regs);

if (error == 0)

current->;ptrace &= ~PT_DTRACE;

putname(filename);

out:

return error;

}

当然不是!内核中编程和应用层大大不一样,你还忘了内核中为什么要大量用goto语句的另一个重要原因,就是内核中经常会牵涉到分配内存空间,而内核页的大小是有限的,内核堆栈空间也仅仅只有8k字节而已,如果已经分配了的空没有释放就会引起大量内存泄漏问题,在你这个例子中,我们分析一下: asmlinkage int sys_execve(struct pt_regs regs) { int error; char * filename; filename = getname((char *) regs.e

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_27966471/article/details/117005270

智能推荐

客户端向服务器端上传文件_客户端调用服务端上传接口-程序员宅基地

文章浏览阅读4.5k次,点赞3次,收藏18次。1、定义通过流从本地文件中读取数据,并通过网络传输上传到服务器。 服务器在接收到数据后再存储到本地2、示例客户端:public class FileClient { public static void main(String[] args) throws Exception{ Socket socket = new Socket("127.0.0.1", 7890); ..._客户端调用服务端上传接口

基于MThings配置MODBUS协议数据的字节序和字序_modbus字节序hl-程序员宅基地

文章浏览阅读3k次,点赞2次,收藏8次。通信调试中,字节序是个常见概念,比如本地字节序、网络字节序。字节存储机制又分两种:大端(Big-Endian)和小端(Little-Endian)。MODBUS协议中同时存在字序概念,存储机制同字节序。不同的是,MODBUS数据帧中对关键字段(寄存器地址)都定义为大端字节序,但是数据部分在不同厂家的定义方式可能不同,甚至同一厂家某一型号设备中,对不同数据的字节序定义也不统一。基于MODBUS报文的字节排序,大端字节序即数据高字节在前,低字节在后,小端字节序相反。例如:01 03 04 1_modbus字节序hl

文件描述符fd和文件指针File* fp的区别和转换_c语言file*fp是什么意思-程序员宅基地

文章浏览阅读3k次,点赞3次,收藏14次。在linux系统中把设备和普通文件也都看做是文件,要对文件进行操作就必须先打开文件,打开文件后会得到一个文件描述符,它是一个很小的正整数,是一个索引值。 内核会为每一个运行中的进程在进程控制块pcb中维护一个打开文件的记录表,每一个表项都有一个指针指向打开的文件,上边的索引值是记录表的索引值。 文件描述符的优点:兼容POSIX标准,许多系统调用都依赖于它;缺点是不能移植到unix之外的系统上..._c语言file*fp是什么意思

office2020与2016版的不同_office2019和2016区别哪个好-程序员宅基地

文章浏览阅读4.2k次。在办公中使用合适的工作软件能够大大提高我们的工作效率,那么最热门的office2016与2019的到底应该选择哪一个呢,让我们来看看他们的区别之处吧!office2016与2019的区别详细说明office2016一、对于普通人来说,家庭版和学生版应该是最显眼的。一般来说,新一代Windows台式机和笔记本电脑大多也预装了此版本的Office,购买机器后可以免费使用。二、但是,此版本也是最小版本,..._vsio2016与2019哪个好用

Bit Twiddling Hacks-程序员宅基地

文章浏览阅读5.4k次。前段转自 http://blog.sina.com.cn/s/articlelist_1249713681_14_1.html作者:很拽的土豆Bit Twiddling HacksBy Sean Eron [email protected], the code snippets here are in the public d_bit twiddling hacks

基于Hadoop集群实现wordcount案例_云服务器hadoop上运行wordcount-程序员宅基地

文章浏览阅读2k次。之前是在linux云服务器上的hadoop本地模式实现了wordcount案例:linux云服务器实现wordcount案例这次改用hadoop的集群模式实现此案例。首先需要确保已完成了Pseudo-Distributed Operation伪分布式搭建,如果没有完成,可参考linux云服务器实现hadoop的Pseudo-Distributed Operation伪分布式搭建搭建完成,并执行sbin/start-dfs.sh后,通过jps命令可查看已存在如下进程31254 DataNode3_云服务器hadoop上运行wordcount

随便推点

QAC/QAC++静态软件代码测试分析-试用工具_qac的 生成的报告如何解读-程序员宅基地

文章浏览阅读2.4k次。原PRQA静态测试软件产品线(包括QAC、 QAC++、QA-Verify等),统一更名为“Helix QAC”,PRQA的代码静态分析工具能够帮助企业开发团队提高代码的质量和安全,缩短软件开发所需的时间,HelixQAC是作为其主打产品目前已广泛应用于汽车、航空航天、电子商务、医疗器械、生产和通信等领域。HelixQAC:HelixQAC是静态代码分析工具,依据C和C++编码规则自动扫描代码对规则的违背。开发团队在开发过程的早期就可以用它来检测缺陷,因为此时修改代码是最方便也最经济的。Helix QA_qac的 生成的报告如何解读

python 爬阳光高考高校数据_爬取阳光高考-程序员宅基地

文章浏览阅读2.2k次。import jsonimport timefrom requests_html import HTMLSession# 判断是否是数字def is_number(s): try: float(s) return True except ValueError: pass try: import unicodedata unicodedata.numeric(s) return._爬取阳光高考

使用Google翻译实现网站国际化——js插件_谷歌翻译js插件 select替换成div-程序员宅基地

文章浏览阅读1.1k次。版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/wokuailewozihao/article/details/82021709-------------------------------------------------------------------------------..._谷歌翻译js插件 select替换成div

GO项目实战 — Gorm格式化时间字段_gorm time-程序员宅基地

文章浏览阅读4.2k次。在使用 查询时,如果未对时间字段进行处理,结构体内的字段类型咱们使用的是 :这里咱们使用 类型在 进行查询的返回结果,读取到的时间字段往往是这样:“”,带着时区和毫秒。但其实往往这样的格式,不是咱们想要的。如果想要 “” 这样的格式,需要怎么处理呢?当插入一条数据到对应的表中时, 字段是不赋值的,插入到数据库则会 ,系统赋了⼀个默认值,当不想插⼊时如何处理?读取到的时间需要是:“2022-07-03 22:14:02” 这样的格式当时间字段不赋值时,不插入默认值虽然该数据类型实际类型为 ,但是不_gorm time

Flask-WTF的CSRF保护详解_flask-wtf csrf-程序员宅基地

文章浏览阅读3.4k次。CSRF 保护这部分文档介绍了 CSRF 保护。为什么需要 CSRF?Flask-WTF 表单保护你免受 CSRF 威胁,你不需要有任何担心。尽管如此,如果你有不包含表单的视图,那么它们仍需要保护。例如,由 AJAX 发送的 POST 请求,然而它背后并没有表单。在 Flask-WTF 0.9.0 以前的版本你无法获得 CSRF 令牌。这是为什么我们要实现 CSRF。实现为..._flask-wtf csrf

给.sh文件添加执行权限linux_如何加权限sh: --config-file-程序员宅基地

文章浏览阅读5k次。chmod是权限管理命令change the permissions mode of a file的缩写。。u代表所有者,x代表执行权限。 + 表示增加权限。chmod u+x file.sh 就表示对当前目录下的file.sh文件的所有者增加可执行权限。_如何加权限sh: --config-file

推荐文章

热门文章

相关标签