ioctl передача параметров

Здравствуйте!
Есть драйвер символьного устройства. Им (устройством) нужно управлять и
при этом передавать параметры. Но никак не получается =(
В драйвере:
kop_ioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct thread *td)
{
printf("ioctl = [%d]; data = [%d]\n", cmd, *(int *)data);
return(0);
}
в программе:
int param;
param = 321;
...
ioctl(kop_dev, 123, ¶m);
...
Драйвер пишет:
ioctl = [123]; data = [0]
Почему 0? Как правильно передать параметр?
Здравствуйте.
Вы писали 25 октября 2004 г., 18:55:25:
Вопрос из серии "тихо сам собою левою рукою" =)
Но может кому понадобиться. разрешил так:
#define GPIB_IOCTL_SELECTDEVICE _IOW('g', 1, char)
(взял из исходников isa/gpib.h)
в драйвере:
...
switch (cmd) {
case GPIB_IOCTL_SELECTDEVICE:
current_device = *(char*)data;
printf("Device selected [%x]\n", *(char*)data);
break;
...
в проге:
...
ioctl(f, GPIB_IOCTL_SELECTDEVICE, &byte);
...
только не совсем понятно с "_IOW" что оно делает и что значит 'g'
(в разных исходниках различно... как будто "от балды" берется)