【问题标题】:How to add a custom semaphore to the linux kernel?如何向 linux 内核添加自定义信号量?
【发布时间】:2014-12-03 15:58:00
【问题描述】:

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

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

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

有什么办法可以让使用我的代码编译的内核的 linux 能够通过包含头文件来使用我的信号量?

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

【问题讨论】:

    标签: linux-kernel


    【解决方案1】:

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

    信号量仅在较旧的 2.6.16 内核中可用,因为互斥体出现在该版本的内核之后。只有以前的实现使用了信号量。较新的代码应该使用仅在进程上下文中使用的互斥锁。您可能想查看以下标头、结构和 api。

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

    您可能还想查看semaphore.c 的实现。

    【讨论】:

    • 谢谢,我使用 semaphore.c 作为我自己的信号量的指南。我尝试查看 posix semaphore.h 文件,这对我来说有点太复杂了,但我想我可以再次查看它们。
    猜你喜欢
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 2018-09-17
    • 2017-07-02
    • 1970-01-01
    相关资源
    最近更新 更多