linux-kernel - 如何向linux内核添加自定义信号量?

标签 linux-kernel

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

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

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

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

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

最佳答案

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

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

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

您也可能想看看semaphore.c以便实现。

关于linux-kernel - 如何向linux内核添加自定义信号量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27276139/

相关文章:

linux - 在 Linux 中物理连续与几乎不连续

c - 核心。如何获取获得CPU时间片的进程名和pid

linux - 用户空间的当前宏

macos - 如何在 Mac OSX 上查看加载的内核模块?

Linux - 识别在物理内存中拥有特定地址的进程

linux - 在 Linux 上设置定时器和信号计数。信号计数与运行时间成正比吗?

linux - CFQ、Deadline 和 NOOP 有什么区别?

linux-kernel - 不同 ebpf 程序类型之间的映射共享

Linux 内核模块字符设备权限

linux - 如果中断处理程序开始旋转会发生什么?