基本上我想在linux内核中实现自己的信号量,并且能够在用户程序中使用它。
我在实现内核代码方面取得了一些进展,但我不知道如何制作信号量类型以及我写给用户程序的函数。
用户程序需要访问我的信号量类型及其功能(等待,信号......)
有没有办法解决这个问题,以便使用我的代码编译的内核的Linux能够通过包含头文件来使用我的信号量?
对于Linux内核,我不是专家,所以如果我犯了任何明显的错误,请随意指出它们。谢谢。 我使用的内核版本是2.6.32。
答案 0 :(得分:2)
我建议查看用户空间库,了解信号量如何为用户空间程序实现。
信号量仅在较早的2.6.16内核中可用,因为在该版本的内核之后出现了互斥量。只有前面的实现使用了信号量。较新的代码应使用互斥体,而互斥体仅用于进程上下文。您可能需要查看以下标题,结构和api' s。
#include <linux/mutex.h>
struct mutex
mutex_{lock,trylock,unlock,lock_interruptable}()
此外,您可能希望查看semaphore.c以了解实施情况。