在linux中使用test_and_set_bit函数的问题

时间:2012-09-18 17:37:16

标签: multithreading linux-kernel multiprocessing atomic

我正在尝试使用test_and_set_bit函数实现自旋锁。我找到了一个由这个函数组成的bitops.h文件。但是,在我当前的内核版本3.0中,该函数不包含在该头文件中,即bitops.h。任何人都可以在我找到的地方提供一些参考资料吗?

1 个答案:

答案 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.harch/x86/include/asm/bitops.h(或您感兴趣的其他任何架构)。

顺便说一下,没有理由需要实现自己的自旋锁 - 内核(当然)标准spinlock_t以及像bit_spin_lock()这样的函数使用单个位作为锁