如何将自定义信号量添加到Linux内核?

时间:2014-12-03 15:58:00

标签: linux-kernel

基本上我想在linux内核中实现自己的信号量,并且能够在用户程序中使用它。

我在实现内核代码方面取得了一些进展,但我不知道如何制作信号量类型以及我写给用户程序的函数。

用户程序需要访问我的信号量类型及其功能(等待,信号......)

有没有办法解决这个问题,以便使用我的代码编译的内核的Linux能够通过包含头文件来使用我的信号量?

对于Linux内核,我不是专家,所以如果我犯了任何明显的错误,请随意指出它们。谢谢。 我使用的内核版本是2.6.32。

1 个答案:

答案 0 :(得分:2)

我建议查看用户空间库,了解信号量如何为用户空间程序实现。

信号量仅在较早的2.6.16内核中可用,因为在该版本的内核之后出现了互斥量。只有前面的实现使用了信号量。较新的代码应使用互斥体,而互斥体仅用于进程上下文。您可能需要查看以下标题,结构和api' s。

#include <linux/mutex.h>
struct mutex
mutex_{lock,trylock,unlock,lock_interruptable}()

此外,您可能希望查看semaphore.c以了解实施情况。