当我读到tty_io.c时,我看到了这个定义。这个__releases()是什么意思?
void tty_write_unlock(struct tty_struct *tty)
__releases(&tty->atomic_write_lock)
{
mutex_unlock(&tty->atomic_write_lock);
wake_up_interruptible_poll(&tty->write_wait, POLLOUT);
}
答案 0 :(得分:1)
Apparently __releases
和__acquires
是在Linux的compiler.h标头中定义的两个宏,它们与Sparse静态检查程序一起使用来计算释放和获取的锁(用于制作确保它们是平衡的。)
答案 1 :(得分:0)
这是一个预处理器宏,它最终会生成一个附加到函数的属性,以便为编译器或其他工具提供有关它的详细信息。
这是linux内核的compiler.h中的定义(显然你正在看的):
# define __releases(x) __attribute__((context(x,1,0)))
它在ifdef __CHECKER__
里面,根据to this wikipedia page,意味着它被静态分析器“Sparse”使用。
答案 2 :(得分:0)
Sparse是一种计算机软件工具,旨在查找Linux内核中可能存在的编码错误
如果您查看维基页面,您会看到linux头文件中的某个位置,__releases
被__attribute__
GCC扩展名替换。