LINUX.ORG.RU

Minor/Major usb mass storage

 


0

2

Привет всем. В общем, получаю список устройств, подключенных по usb, через libusb, затем отсеиваю mass storage устройства.

Нужно получить minor/major, чтобы потом создать специальный файл с ними. Может уже есть что готовое?

Язык с, с++

★★★★★
Ответ на: комментарий от Dennis7

Странно как–то. Делаю так:

struct stat nfo;

bzero(&nfo,sizeof(struct stat));

int err = stat("/dev/sdb",&nfo);

int minor = minor(nfo.st_dev);

int major = major(nfo.st_dev);

err == 0, minor == 5, major == 0, хотя ls -l /dev/sdb даёт major/minor 8 и 16. Что не так?

false ★★★★★
() автор топика
Ответ на: комментарий от false
man 2 stat
...
struct stat {
       dev_t     st_dev;  /* ID of device containing file */
       ...
       dev_t     st_rdev; /* device ID (if special file)*/       

Надо minor(nfo.st_rdev); ты получаешь минор & мажор файловой системы.

Dennis7
()
Ответ на: комментарий от false

Хотя всё равно не то. У меня тут частично самопальная реализация libusb непонятно какой версии, usb_open возвращает fd для устройства в /dev/bus/usb/, а там минор и мажор вообще странные какие-то:

$ ls -l /dev/bus/usb/002/003 
crw-rw-r-- 1 root root 189, 130 нояб.  8 18:13 /dev/bus/usb/002/003

Так что вопрос по-прежнему актуален.

false ★★★★★
() автор топика
Ответ на: комментарий от false

Кстати, почему так.

$ lsusb -s 002:005
Bus 002 Device 005: ID 8564:1000

Но при этом в каталоге /sys

/sys/bus/usb/drivers/usb-storage/2-1\:1.0

Где вообще про всё это можно почитать? В исходники ядра пока лезть не хочется. Ещё интересует образование имён, например, на одной машине есть каталог /sys/bus/usb/drivers/usb-storage/2-1\:1.0/host6, но при этом на другой /sys/bus/usb/drivers/usb-storage/2-1\:1.0/host13.

false ★★★★★
() автор топика
Ответ на: комментарий от false

Отчасти можно посмотреть главу 13 Linux device drivers. Там что-то такое было... Но 3-е издание устарело, а на счет 4-го, вышло оно или нет, я не уверен.

Ну и смотри еще исходники твоей libusb наверно...

Dennis7
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.