制作一个使用光标位置生成熵的/ dev/hwrng内核模块

问题描述:

我是内核开发的新手,所以为了增加我的技能,我想创建一个简单的内核模块,它将设备/ dev/hwrng设置为并生成一些熵与光标位置。制作一个使用光标位置生成熵的/ dev/hwrng内核模块

目前我已经找到推出的/ dev/hwrng的方式,只有零熵=>http://main.lv/writeup/kernel_dev_hwrng.md

生成得到光标位置我知道型动物的方式:

  • 从库X11 /Xlib.h - >我可以得到我的光标的绝对位置,从/dev/input/mice
  • /dev/input/mouse0 - >我能得到的相对位置
  • 形式/dev/input/event<X>其中X是NU mber这是找到命令cat /proc/bus/input/devices

所以我知道如何获得用户的土地光标位置,但我不知道如何从内核土地获得它。我已经阅读了关于IOCTL的一些内容,但为了这一点而在用户空间和内核空间之间建立联系似乎很奇怪。 感谢您的帮助。

+1

我怀疑光标的绝对位置在内核中是已知的。 X服务器知道,因为它正在绘制它(我认为),但这是相对于设备驱动程序的鼠标移动。但X服务器是一个用户登陆进程,无法看到为什么会回到内核。如果您认为X服务器可以通过网络远程访问,那么它完全独立于底层内核。 – bazza

+0

我同意,内核没有理由知道光标的位置。所以我试图用我的熵模块作为光标位置的输入,我正在考虑使用/ dev/input设备之一,但是我不知道是否可能仅仅使用内核空间,如果是这样,我不会不知道该怎么做。 – Gram

+0

当然,但是在您的内核模块中,来自输入设备的随机性只能从用户在本地登录时的行为中获得。如果他们已远程登录,那么本地没有任何输入,这将是考虑到你的想法是坏事;这将是恒定的零输入。 – bazza

我会建议看看这第一个:https://unix.stackexchange.com/questions/25601/how-do-mouse-events-work-in-linux 简短的版本将是你可以从内核空间访问相同的设备文件。