implementing ioctl() commands in FreeBSD
Question
I am adding some code to an existing FreeBSD device driver and I am trying to pass a char*
from user space to the driver. I've implemented a custom ioctl()
command using the _IOW
macro like so: #define TIBLOOMFILTER _IOW(0,253,char*)
My call looks something like this:
int file_desc = open("/dev/ti0", O_RDWR);
ioctl(file_desc, TIBLOOMFILTER, (*filter).getBitArray());
close(file_desc);
When I call ioctl()
I get: Inappropriate ioctl for device
as an error message. Any guess as to what may be doing wrong? I've defined the same macro in my device driver, and added it to the case
statement.
Solution
Did you register your ioctl handler with
.d_ioctl = ioctl_handler
in ?devsw (char/block device switch table)?
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow