当我阅读 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);
}
它是一个预处理器宏,最终生成附加到函数的一些属性,以提供编译器或其他工具的详细信息。
这是 linux 内核的compiler.h中的定义(这显然是您正在查看的内容):
# define __releases(x) __attribute__((context(x,1,0)))
ifdef __CHECKER__
根据this wikipedia page ,它在其中意味着它被静态分析器“Sparse”使用。
Sparse使用的预处理器宏
Sparse 是一种计算机软件工具,旨在发现 Linux 内核中可能存在的编码错误
如果您查看 wiki 页面,您会看到 linux 的头文件中的某处__releases
被__attribute__
GCC 扩展取代。