【问题标题】:what syntax is this? (tty_write_unlock)这是什么语法? (tty_write_unlock)
【发布时间】:2023-04-01 13:37:02
【问题描述】:

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

【问题讨论】:

标签: c function syntax


【解决方案1】:

Apparently __releases__acquires 是定义在 Linux 的 compiler.h 头文件中的两个宏,它们与 Sparse 静态检查器一起使用以计算释放和获取的锁(以确保它们是平衡的)。

【讨论】:

    【解决方案2】:

    这是一个预处理器宏,最终生成附加到函数的一些属性,以向编译器或其他工具提供有关它的详细信息。

    这是 linux 内核的compiler.h 中的定义(这显然是您正在查看的内容):

    # define __releases(x)  __attribute__((context(x,1,0)))
    

    它在ifdef __CHECKER__ 内部,根据to this wikipedia page,这意味着它被静态分析器“Sparse”使用。

    【讨论】:

      【解决方案3】:

      Sparse 使用的预处理器宏

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

      如果您查看 wiki 页面,您会看到在 linux 的头文件中某处,__releases 被替换为 __attribute__ GCC 扩展。

      【讨论】:

        猜你喜欢
        • 2010-12-13
        • 2012-02-12
        • 1970-01-01
        • 1970-01-01
        • 2012-01-29
        • 2017-10-10
        • 2021-08-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多