我正在向现有的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
语句中。
答案 0 :(得分:2)
您是否使用
注册了ioctl处理程序?.d_ioctl = ioctl_handler
in?devsw(char / block device switch table)?