linux内核中GNU C __attribute__ 机制的实用

  很多东西,只看看是不行的,要想深入的去了解一个东西,一定要去不断地学习,实践,反思。

说白了就是要去打磨。

  在linux中,最近遇到了这样一个定义:

int board_usb_init(int index, int usb_init_type) __attribute__((weak, alias("__board_usb_init")));

一下子懵逼了,啥意思?不懂的东西,还是要查一下的:

  weak 和 alias 分别是两个属性。

  weak 使得 foo 这个符号在目标文件中作为 weak symbol 而不是 global symbol

  而 alias 则使 foo 是 __foo 的一个别名。

  清楚之后,就要实例来看一下了,估计这下大家就清楚了。

#include <stdio.h>

//__weak int __board_usb_init(int index, enum usb_init_type init)
int __board_usb_init(int index, int usb_init_type)
{
printf("my test is ok\n\t");
return ;
} int board_usb_init(int index, int usb_init_type)
__attribute__((weak, alias("__board_usb_init"))); int main()
{
board_usb_init(,);
return ;
}

  

上一篇:Linux内核中的软中断、tasklet和工作队列具体解释


下一篇:针对苹果最新审核要求为应用兼容IPv6