Multithreading linux中使用test_和_set_位函数的问题

Multithreading linux中使用test_和_set_位函数的问题,multithreading,linux-kernel,multiprocessing,atomic,Multithreading,Linux Kernel,Multiprocessing,Atomic,我正在尝试使用test_和set_位函数实现自旋锁。我找到了一个由这个函数组成的bitops.h文件。但是,在我当前的内核版本3.0中,该函数不包含在头文件(即bitops.h)中。有人提供一些我能找到的参考资料吗?不确定我是否完全理解你的问题,但包括应该包含测试和设置位()的定义。函数的实际定义不在include/linux/bitops.h中,而是通过include的linux/版本中的的include来获取 因此,要查看test_和

我正在尝试使用test_和set_位函数实现自旋锁。我找到了一个由这个函数组成的bitops.h文件。但是,在我当前的内核版本3.0中,该函数不包含在头文件(即bitops.h)中。有人提供一些我能找到的参考资料吗?

不确定我是否完全理解你的问题,但包括
应该包含
测试和设置位()的定义。函数的实际定义不在include/linux/bitops.h中,而是通过include的
linux/
版本中的
的include来获取

因此,要查看
test_和
的实际定义,您可以查看
arch/arm/include/asm/bitops.h
arch/x86/include/asm/bitops.h
(或您感兴趣的任何其他体系结构)


顺便说一句,没有理由需要实现您自己的自旋锁——内核(当然)有标准的
spinlock\u t
,还有像
bit\u spin\u lock()
这样使用单个位作为锁的函数。

不确定我是否完全理解您的问题,但是包括
应该引入
测试和设置位()的定义。函数的实际定义不在include/linux/bitops.h中,而是通过include的
linux/
版本中的
的include来获取

因此,要查看
test_和
的实际定义,您可以查看
arch/arm/include/asm/bitops.h
arch/x86/include/asm/bitops.h
(或您感兴趣的任何其他体系结构)


顺便说一句,没有理由需要实现自己的自旋锁——内核(当然)有标准的
spinlock\u t
,还有像
bit\u spin\u lock()
这样使用单个位作为锁的函数。

我可以看到它是在arch/x86/include/asm/bitops.h中定义的。然而,我很难让它编译。当我尝试包含linux/bitops.h并尝试编译它时,它会抛出很多错误。你能给我一个如何使用它的例子吗?事实上,我正在尝试为我的应用程序实现自旋锁,其中有线程访问的某些变量,为了安全地实现并发性,我需要它。所以你是否在尝试从用户空间使用bitops.h?如果是的话,那么在内核构建系统之外构建它是很困难的。pthread_spin_lock()等也有问题吗?实际上,我使用进程而不是单个线程来获得自旋锁,使用内核的test_和_set_bit函数。你能给我一个例子代码来完成这一点吗。我很难编译它,我可以看到它是在arch/x86/include/asm/bitops.h中定义的。然而,我很难让它编译。当我尝试包含linux/bitops.h并尝试编译它时,它会抛出很多错误。你能给我一个如何使用它的例子吗?事实上,我正在尝试为我的应用程序实现自旋锁,其中有线程访问的某些变量,为了安全地实现并发性,我需要它。所以你是否在尝试从用户空间使用bitops.h?如果是的话,那么在内核构建系统之外构建它是很困难的。pthread_spin_lock()等也有问题吗?实际上,我使用进程而不是单个线程来获得自旋锁,使用内核的test_和_set_bit函数。你能给我一个例子代码来完成这一点吗。我很难编辑它。