USB Linux API:从用户空间应用调用 ioctl 请求
Posted
技术标签:
【中文标题】USB Linux API:从用户空间应用调用 ioctl 请求【英文标题】:USB Linux API: call ioctl requests from user space app 【发布时间】:2019-07-09 10:34:53 【问题描述】:我想创建负责获取/设置一些 USB 设置的 Linux 应用程序,尤其是负责以下设置的设置:
USB 端口
USB 主机控制器和 USB 驱动程序
USB 设备
我跟着linux api文档:https://www.kernel.org/doc/html/v4.14/driver-api/usb/usb.html发现可以通过ioctl完成 我找到了一个 ioctl 请求列表,例如 USBDEVFS_GETDRIVER。
我发现如果我想要第一个小测试,可以这样:
struct usbdevfs_getdriver usbdriver;
int fd = open("device_file_name", O_RDWR);
ioctl(fd, USBDEVFS_GETDRIVER, (struct usbdevfs_getdriver*) &usbdriver);
这是正确的方法吗?我的代码第二行中的 device_file_name 应该是什么?
【问题讨论】:
【参考方案1】:字符串device_file_name
应替换为USB 设备节点文件的路径。您提到的文档解释说,此类文件的路径类似于/dev/bus/usb/BBB/DDD
。
您应该检查open
和ioctl
返回的值以查看操作是否成功。
【讨论】:
【参考方案2】:device_file_name:应该是挂载usb的文件。通常它位于/mnt/ 下。 您可以使用命令 dmesg。
【讨论】:
以上是关于USB Linux API:从用户空间应用调用 ioctl 请求的主要内容,如果未能解决你的问题,请参考以下文章