这是什么语法? (tty_write_unlock)

时间:2013-09-05 11:44:53

标签: c function syntax

当我读到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);
}

3 个答案:

答案 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

使用的预处理器宏
  

Sparse是一种计算机软件工具,旨在查找Linux内核中可能存在的编码错误

如果您查看维基页面,您会看到linux头文件中的某个位置,__releases__attribute__ GCC扩展名替换。