我正在尝试使用test_and_set_bit函数实现自旋锁。我找到了一个由这个函数组成的bitops.h文件。但是,在我当前的内核版本3.0中,该函数不包含在该头文件中,即bitops.h。任何人都可以在我找到的地方提供一些参考资料吗?
答案 0 :(得分:3)
不确定我是否完全理解您的问题,但包括<linux/bitops.h>
应该引入test_and_set_bit()
的定义。该函数的实际定义不在include/linux/bitops.h
中,而是通过包含<asm/bitops.h>
的{{1}}版本中的linux/
来获取。
因此,要查看test_and_set_bit()
的实际定义,您可以查看arch/arm/include/asm/bitops.h
或arch/x86/include/asm/bitops.h
(或您感兴趣的其他任何架构)。
顺便说一下,没有理由需要实现自己的自旋锁 - 内核(当然)标准spinlock_t
以及像bit_spin_lock()
这样的函数使用单个位作为锁