>>Имеется система freebsd 2.2.x
>>Там в мане по ioctl такое:
>>
>>для вызова ioctl(int fd, unsigned long request, char *argp)
>>
>>An ioctl request has encoded in it whether the argument is an in parameter or out parameter, and the size of the argument argp in bytes. Macros and defines used in specifying an ioctl request are located in the file <sys/ioctl.h>.
>>
>>Но как запихивать в параметр request все это нигде не описано. Помогите
>>разобраться...
>
>Взгляните на http://www.unet.univie.ac.at/aix/libs/basetrf1/ioctl32.htm
>
>Удачи
>--- sas
Спасибо большое, но по-моему это немного не то.
Поподробней опишу проблему. Пишу драйвер под сабж.
Нужно сделать интерфейс с устройством через ioctl.
В ядре/драйвере параметры такие:
static int mydev_ioctl (dev_t dev, int cmd, caddr_t data, int flag, struct proc *p);
А в пользовательской программе такие:
ioctl(int fd, unsigned long request, char *argp)
Если посылать от юзера request то он приходит на cmd в драйвере.
Но указатель char * argp не приходит на caddr_t data (char * data).
И то есть получается я не могу никакие данные передать в драйвер.
Судя по ману я решил, что в параметре request необходимо еще как-то
задавать размер и свойства argp/data.
Это так? Или я что-то неправильно делаю....
Буду очень благодарен за любую помощь.