USB Linux API: вызов ioctl-запросов из приложения пользовательского пространства - PullRequest
1 голос
/ 09 июля 2019

Я хочу создать приложение для Linux, отвечающее за получение / установку некоторых настроек usb, особенно за следующие:

  • USB-порты

  • Хост-контроллер USB и драйвер USB

  • USB-устройства

Я следовал документу API Linux: 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);

Это правильный путь? Каким должно быть имя_файла_устройства во второй строке моего кода?

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Строка device_file_name должна быть заменена путем к файлу узла устройства USB.В документе, который вы упомянули, объясняется, что путь к такому файлу выглядит как /dev/bus/usb/BBB/DDD.

. Вы должны проверить значения, возвращаемые как open, так и ioctl, чтобы убедиться, что операции выполнены успешно.

0 голосов
/ 09 июля 2019

имя_файла_устройства: должно быть файлом, в который монтируется usb. В общем, это под / mnt /. Вы можете использовать команду dmesg.

...