LINUX.ORG.RU

Объясните мне про ioctl ....


0

0

Доброе время суток.
Такой вот вопрос возник у меня. Если в user-space ioctl определяется как
int ioctl(int d, int requset, ...);
то в kernel-space, в структуре file_operations это выглядит след. образом:
int (*ioctl)(struct inode*,struct file*,unsigned int,unsigned long);
Теперь собссно вопрос.
1. Правильно ли первым параметром в "ядерном" ioctl указывать fd->f_dentry->d_inode
2. Хочу я последним параметром передать ссылку на структуру или хотя бы на int, но именно ссылку(указатель).... И чего? Как ето провернуть? Я конечно предполагаю, что вопрос ламерский, но хотелось бы точно знать, как в моем случае поступить. Если на примерах:
В user-space :
int format = AFMT_U8;
ioctl(dd, SNDCTL_DSP_SETFMT, &format);
В kernel-space:
int format = AFMT_U8;
dd->f_op->ioctl(dd->f_dentry->d_inode, dd, SNDCTL_DSP_SETFMT, &format);

-

1 правильно
2 правильно

судя по всему ты пытаешся работать со звуком в КM ? (AFMT_U8, SNDCTL_DSP_SETFMT) я прав ?

вот тут http://kmixer.sourceforge.net/ есть довольно простой пример работы со звуком в ядре.

sS ★★★★★
()
Ответ на: - от sS

Спасибо

SnakePAN
() автор топика

Всё верно, только про set_fs не забывай.

P.S. Еще часть generic ioctl'ей обрабатывает VFS (/usr/src/linux/fs/ioctl.c).

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