完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
Read The ***ing Source Code ! ---一位前辈如此教导我们!
首先去https://www.kernel.org/下载一个比较稳定的版本! 我用的是linux-3.0.12,相邻版本之间基本上差异不大,差异的东西可以查看changelog。 下面SI建立一个新的工程,同步文件,开始进入第一个接口: asmlinkage void __init start_kernel(void) //内核C语言的入口 问题来了:asmlinkage是干什么的? 遂,去谷歌,度娘,到处折腾,最后总结下来,是这么个意思: 【1】 asmlinkage 是一个宏定义 :#define asmlinkage CPP_ASMLINKAGE __attribute__((regpARM(0))) 它的作用是告诉编译器,“由我修饰的接口,接口参数只能通过栈传递!” 【2】CPP_ASMLINKAGE 也是一个宏定义:#define CPP_ASMLINKAGE extern "C" extern "C"这个玩意儿度娘有很详细的解释http://baike.baidu.com/view/2816461.htm?fromtitle=extern+%26quot%3BC%26quot%3B&fromid=239817&type=syn我就不再献丑了,让我去解释,一下子还真是说不清楚,口才是很重要的技能,有木有! 【3】__attribute__((regparm(0)))整体的意思是,传递给寄存器0个参数,就是参数全部由栈传递,这里很重要的一个东西就是__attribute__ 引用此帖来介绍这个玩意儿,一楼回复一级棒,不得不给0x20个赞呀:http://bbs.csdn.net/topics/330133457 好了,简单的一行代码,我觉得其中延伸的东西就够我学半天了,此时响起屈公一句经典:路漫漫。。。。。,。。。。。。 |
|
|
|
只有小组成员才能发言,加入小组>>
「含关键代码」基于AM3352/AM3354/AM3359的Linux开发案例分享
4874 浏览 0 评论
87365 浏览 0 评论
【高手问答】如何做到精通linux技术?资深工程师带你突破难点
4686 浏览 2 评论
3576 浏览 2 评论
解读Linux :先从创建一个文件夹用来存放jdk压缩文件开始
2459 浏览 0 评论
1956浏览 3评论
这是i.mx6ull的关于usb的宏定义,能解释下这些宏定义的意思
1323浏览 1评论
1233浏览 1评论
求解:aarch64交叉编译工具已经安装成功,环境变量已经配置,怎么将系统架构切换为ARM的架构
1301浏览 0评论
电脑和虚拟机可以互ping,电脑和开发板也可以互ping,但是虚拟机和开发板ping不通是什么原因
1215浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 08:50 , Processed in 1.058099 second(s), Total 47, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号