当前位置: 首页 > 面试题库 >

IOCTL Linux设备驱动程序

东方俊材
2023-03-14
问题内容

谁能解释我,

  1. 什么IOCTL
  2. 这有什么用途?
  3. 如何使用?
  4. 为什么我不能定义与之功能相同的新功能IOCTL

问题答案:

一个ioctl,表示“输入-
输出控制”是一种特定于设备的系统调用。Linux(300-400)中只有几个系统调用,不足以表示设备可能具有的所有独特功能。因此,驱动程序可以定义一个ioctl,它允许用户空间应用程序向其发送订单。但是,ioctl并不是很灵活,并且会变得有些混乱(数十个“魔术数字”可以正常工作…不管用还是无效),并且在将缓冲区传递到内核时也可能不安全-
错误的处理可能会破坏事情很容易。

另一种方法是在该sysfs接口下建立文件/sys/并对其进行读写,以从驱动程序中获取信息。如何设置的示例:

static ssize_t mydrvr_version_show(struct device *dev,
        struct device_attribute *attr, char *buf)
{
    return sprintf(buf, "%s\n", DRIVER_RELEASE);
}

static DEVICE_ATTR(version, S_IRUGO, mydrvr_version_show, NULL);

在驱动程序安装过程中:

device_create_file(dev, &dev_attr_version);

这样,你会为您的设备在一个文件中/sys/,例如,/sys/block/myblk/version块驱动程序。

大量使用的另一种方法是netlink,它是一种IPC(进程间通信)方法,用于通过BSD套接字接口与驱动程序进行通信。例如,这由WiFi驱动程序使用。然后,您可以使用libnllibnl3库从用户空间与其进行通信。



 类似资料:
  • 更新时间:2019-04-16 19:04:41 各种不同的设备在不同的操作系统使用时,可能需要单独安装对应的驱动程序。为了方便用户,Hacklab提供了支持的部分开发板串口驱动程序下载及安装信息,请根据使用的开发板和PC OS下载对应的驱动程序。 串口芯片驱动 CP210x 下载地址 使用该串口驱动的开发板包括: ST Nucleo F412ZG esp32devkitc(Board类型可选择E

  • 问题内容: 如何使用打开,关闭,ioctl等功能为i2c设备制作字符设备?最近两周我一直在寻找有关它的信息,找不到任何有效的方法。我在Essential LinuxDevice Drivers中找到了一些信息,但是它是针对2.6内核编写的,我使用3.4.79(我正尝试在cubian distr上为cubieboard2编写此驱动程序),因此本书有许多不推荐使用的功能,我试图在那里写我的驱动程序,但

  • 操作系统其中一个目的就是向用户掩盖系统硬件设备的特殊性。例如,虚拟文件系统呈现了安装的文件系统的一个统一的试图,而和底层的物理设备无关。本章描述 Linux 核心是如何管理系统中的物理设备的。 CPU 不是系统中唯一的智能设备,每一个物理设备都由它自己的硬件控制器。键盘、鼠标和串行口由 SuperIO 芯片控制, IDE 磁盘由 IDE 控制器控制, SCSI 磁盘由 SCSI 控制器控制,等等。

  • Device Drivers 设备驱动程序 Generic Driver Options 驱动程序通用选项.[提示]Linux Kernel Driver DataBase网 站是搜索驱动程序与硬件型号对应关系的绝佳网站.如果你不知道某个驱动(例如"CONFIG_INTEL_IOATDMA")究竟对应着哪些型号的硬件, 那么可以直接根据该驱动选项的首字母(本例是"I")进入对应的索引页去查找到该驱

  • 驱动和块设备驱动 什么是块设备 注意到我们在介绍 virtio 时提到了 virtio-blk 设备,这种设备提供了以整块为粒度的读和写操作,一般对应到真实的物理设备是那种硬盘。而之所以是以块为单位是为了加快读写的速度,毕竟硬盘等设备还需要寻道等等操作,一次性读取很大的一块将会节约很多时间。 抽象驱动 在写块设备驱动之前,我们先抽象驱动的概念,也方便后面网络设备等的介入。 os/src/drive

  • Valentino Vaschetto 和 Wylie Stilwell. 10.1. 概述 本章介绍了编写ISA设备驱动程序相关的一些问题。这儿展示的伪代码 相当详细,很容易让人联想到真正的代码,不过这依然仅仅是伪代码。 它避免了与所讨论的主题无关的细节。真实的例子可以在实际驱动程序的 源代码中找到。ep和aha 更是信息的好来源。 10.2. 基本信息 典型的ISA驱动程序需要以下包含文件: