2014-12-03 56 views
2

基本上我想在Linux内核中实现我自己的信号量并能够在用户程序中使用它。如何将自定义信号添加到linux内核?

我已经在实现内核代码方面取得了一些进展,但是我不知道如何使信号量类型和我写的函数可用于用户程序。

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

有没有什么办法来这让使用内核Linux的编译我的代码会能够简单地通过包含头文件来使用我的信号量?

我不是专业的Linux内核,所以如果我犯了任何明显的错误,请随时指出。谢谢。 我正在使用的内核版本是2.6.32。

回答

2

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

信号量只在2.6.16内核的内核中可用,因为互斥量出现在内核版本之后。只有以前的实现使用了信号量。较新的代码应该使用互斥锁,而不是仅在进程上下文中使用互斥锁。你可能想看看下面的头文件,struct和api。

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

另外你可能想看看semaphore.c的实施。

+0

谢谢,我用semaphore.c作为我自己的信号量的指南。我试图通过posix semaphore.h文件来查看,这有点太复杂了,但我想我可以再次通过它们。 – AmV 2014-12-03 17:27:42