【发布时间】:2014-01-09 11:21:44
【问题描述】:
我最近在 Linux 内核中得到了一段 sn-p 代码:
static int
fb_mmap(struct file *file, struct vm_area_struct * vma)
__acquires(&info->lock)
__releases(&info->lock)
{
...
}
让我感到困惑的是static int fb_mmap() 后面紧跟在"{" 之前的两个__function,
a).这两个__函数的作用是什么?
b).为什么在那个位置?
c).为什么他们有前缀"__"?
d).还有其他类似的例子吗?
【问题讨论】:
-
它们很可能是宏,因此请在头文件中搜索它们的定义。
-
@JoachimPileborg 我不记得在 C 语法中你可以把任何东西放在那个位置。
-
宏很可能会扩展为 GCC 扩展
__attribute__,它确实可以放在那个位置。
标签: c linux linux-kernel linux-device-driver