c - 如何禁止从 Linux 内核模块访问键盘和鼠标?

标签 c linux linux-kernel kernel kernel-module

我正在尝试编写一个内核模块,它在一天中的特定时间段之间禁用输入。我发现了如何获取时间 ( How to get current hour (time of day) in linux kernel space ) 以及如何安排功能。 我似乎无法弄清楚如何禁用输入。我在想内核必须有一些地方可以做到这一点,但是在阅读了 API 之后我仍然没有进一步的进展。我想我应该直接访问驱动程序并关闭它们或其他东西,但这似乎有点不通用。 这可能吗?

感谢您的宝贵时间。

最佳答案

我不确定,但如果你在用户空间,切换到一个未使用的虚拟控制台就足够了,然后将键盘置于原始模式。这将阻止通常会切换回另一个虚拟控制台的组合键。这不会禁用鼠标,但如果不是当前 VT,X 应该忽略鼠标(只要确保 gpm 没有运行)。

如果启用了 magic-sysrq 组合键,您还必须禁用它,因为有一个 sysrq 键可以使键盘退出原始模式,否则可以解决这个问题。


编辑:如果您处于正常的任务上下文中,应该可以从内核空间执行所有这些操作。我希望内核线程可以。

您可以从内核打开文件和设备,但不推荐这样做。具有包含/dev 的命名空间的任务(我不确定内核任务是否有)。您可以调用 filp_open(我认为)并获取一个文件 *,然后您可以在其 file_operations (f_op) 上调用适当的方法。这应该包括执行上述操作所需的 ioctl。

可能有一种方法可以直接打开设备,而不是通过 filp_open。

总之,应该是可以的。这是从内核空间做的非常狡猾的事情。

关于c - 如何禁止从 Linux 内核模块访问键盘和鼠标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5172643/

相关文章:

c - Linux 上的 GATT 库位置

linux - Grep Next Line Only If Two Lines above Match String 连续

linux - Linux 内核中的 DECLARE_COMPLETION_ONSTACK 功能

linux-kernel - Linux 显示器设备驱动程序帧缓冲区

c - x86_64:堆栈框架指针几乎没有用吗?

c - 冒泡排序链表,交换指针。 C

linux - 查找localhost:8080文件夹和文件

c - tty在Linux内核中的作用

计算秒数不起作用

linux - 如何在 bash 中评论参数列表