реализация команд ioctl () во FreeBSD - PullRequest
4 голосов
/ 22 марта 2010

Я добавляю некоторый код в существующий драйвер устройства FreeBSD и пытаюсь передать char* из пространства пользователя драйверу. Я реализовал пользовательскую команду ioctl(), используя макрос _IOW, например: #define TIBLOOMFILTER _IOW(0,253,char*)

Мой звонок выглядит примерно так:

int file_desc = open("/dev/ti0", O_RDWR);
ioctl(file_desc, TIBLOOMFILTER, (*filter).getBitArray());
close(file_desc);

Когда я звоню ioctl(), я получаю: Inappropriate ioctl for device как сообщение об ошибке. Есть предположения о том, что может быть не так? Я определил тот же макрос в своем драйвере устройства и добавил его в оператор case.

1 Ответ

2 голосов
/ 22 марта 2010

Вы зарегистрировали свой обработчик ioctl с

.d_ioctl  = ioctl_handler

in? Devsw (таблица переключателей устройства char / block)?

...