asmlinkage和likely
来源:互联网 发布:iphone视频制作软件 编辑:程序博客网 时间:2024/06/16 05:05
#define fastcall __attribute__((regparm(3)))#define asmlinkage __attribute__((regparm(0)))
函数定义前加宏asmlinkage ,表示这些函数通过堆栈而不是通过寄存器传递参数。
gcc编译器在汇编过程中调用c语言函数时传递参数有两种方法:一种是通过堆栈,另一种是通过寄存器。缺省时采用寄存器,假如你要在你的汇编过程中调用c语言函数,并且想通过堆栈传递参数,你定义的c函数时要在函数前加上宏asmlinkage
if(likely(tv)) { 执行一些代码。。。}
if (likely(tv))等价于if (tv)
if (unlikely(tv))等价于if (tv)
这两个宏在内核中定义如下:
#define likely(x) __builtin_expect(!!(x), 1)#define unlikely(x) __builtin_expect(!!(x), 0)
目的是将”分支转移”的信息提供给编译器,这样编译器对代码进行优化,以减少指令跳转带来的性能下降。
__buildin_expect((x), 1)表示x的值为真的可能性更大.
__buildin_expect((x), 0)表示x的值为假的可能性更大.
likely和unlikely的功能就是添加 cache的命中率,提高系统执行速度
0 0
- asmlinkage和likely
- fastcall 和 asmlinkage
- asmlinkage
- asmlinkage
- asmlinkage
- asmlinkage
- asmlinkage
- asmlinkage
- asmlinkage
- asmlinkage
- asmlinkage
- asmlinkage
- asmlinkage
- asmlinkage
- asmlinkage
- asmlinkage
- 有关likely和unlikely
- 有关likely和unlikely
- 指针和引用的区别
- ArrayList源码详解
- XML 解析详解
- Struts2.x 学习笔记 之 类型转换器 和 错误提示修改
- Xcode7下真机配置iOS10
- asmlinkage和likely
- [LeetCode-Java]2. Add Two Numbers
- lesson1: 二次学习C——解读C语言的基本结构
- List of all MySQL commands
- [算法导论]2.2节编程练习C++实现
- python学习(2)图像处理指令解析
- 开发者所需要知道的 iOS 10 SDK 新特性
- yii 即点即改
- HTML5教程从入门到精通及网站源码