使用inb、inl、inw从用户空间访问内核空间

使用inb、inl、inw从用户空间访问内核空间

inb在 Linux 中使用、inl、 和inw访问内核空间的用户空间示例有哪些?

答案1

inboutb朋友们并不用于内核↔用户空间通信,它们用于读取和写入特定于平台的IO端口。

这些功能的典型用途是与串行或并行端口(以及连接的设备)直接交互,而无需一路创建特定的内核设备驱动程序。
X 服务器还可以使用它们与视频(或可能的输入设备)硬件进行低级通信。

要从用户空间使用这些调用,需要做两件事:

  • 调用进程必须有CAP_SYS_RAWIO能力(这通常意味着它需要以 root 身份运行)。
  • 调用进程必须请求许可才能使用它想要的端口,并且ioperm或者iopl系统调用。

Linux I/O 端口编程迷你 HOWTO将引导您完成基本知识,最后有一个简单的示例程序*
请注意,使用此端口的程序直接与这些端口后面的任何硬件(或固件)进行通信。内核不会验证或以其他方式干扰这些调用。因此,误用它们可能会导致严重的问题。小心轻放。

*您需要#include <stdlib.h>并 替换<asm/io.h><sys/io.h>才能编译。

相关内容