Chinaunix首页 | 论坛 | 博客
  • 博客访问: 336743
  • 博文数量: 135
  • 博客积分: 4637
  • 博客等级: 上校
  • 技术积分: 1410
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-21 13:22
文章分类

全部博文(135)

文章存档

2013年(12)

2012年(14)

2011年(42)

2010年(22)

2009年(18)

2008年(27)

分类: LINUX

2008-12-10 15:42:03

在内核中,很多函数定义用到了asmlinkage,今天在看wait queue源码时,又看到了fastcall 修饰的函数定义。一直没有弄得特别明白,查了相关资料,在此和大家分享一下

#define fastcall __attribute__((regparm(3)))
#define asmlinkage __attribute__((regparm(0)))
函数定义前加宏asmlinkage ,表示这些函数通过堆栈而不是通过寄存器传递参数。
gcc编译器在汇编过程中调用c语言函数时传递参数有两种方法:一种是通过堆栈,另一种是通过寄存器。缺省时采用寄存器,假如你要在你的汇编过程中调用c语言函数,并且想通过堆栈传递参数,你定义的c函数时要在函数前加上宏asmlinkage。
阅读(748) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~