行为是否提到了C11禁止的LWN article “Betrayed by a bitfield”?假设spinlock_t
是一种类型,指的是只能通过其成员上的C11原子基元访问的结构(实际上它使用Linux(内核)内存屏障,但假设它没有这样它由于使用特定于实现的接口,因此未定义。除了标题中的问题,它是一个“凭空”的例子吗?。
提前致谢。
答案 0 :(得分:2)
不,因为它在这里提出它在C11中是不被禁止的。 C11仅为_Atomic
类型提供原子性保证,即在语言中声明为原子的类型。由于内核使用自己的本土原语来确保你自己的原子性,C11在这里无法帮助你。
与本地汇编程序黑客相比,C11 _Atomic
更改的内容是_Atomic
可能会更改数据类型的大小和对齐属性。在给定的示例中,它可以例如强制在下一个字边界的边缘上使用尾随位字段。