作为环 0 运行汇编程序

Ano*_*ist 4 linux-kernel assembly

我正在编写一个应用程序,它报告 CPU 温度传感器和风扇速度监视器的读数。不过,根据Intel关于PECI的文档,所需的指令必须运行在ring 0模式,即内核模式,否则会抛出异常。

我在网上遇到了从保护模式转换到内核模式的代码,但是没有从用户模式转换到内核模式的代码,而且我读到它被内核禁止了。是否有解决方法,希望不需要修补内核,以允许最初处于用户模式的程序作为内核模式运行?

Gre*_*ill 5

不可以。内核经过专门设计,禁止用户模式代码在 Ring 0 中运行。

为了做到这一点,您必须编写一个内核模块,然后通过ioctl用户模式程序中的某种方法(也许)与您的模块进行通信。

编写内核模块不需要给内核打补丁,但是内核模块必须非常仔细地编写。最好从执行类似操作的示例模块开始,然后对其进行修改以满足您的需求。