Inappropriate ioctl for device
Gary Jennejohn
gljennjohn at googlemail.com
Fri Dec 24 17:44:04 UTC 2010
On Fri, 24 Dec 2010 19:37:37 +0330
Mohammad Hedayati <hedayati.mo at gmail.com> wrote:
> On Fri, Dec 24, 2010 at 7:31 PM, Gary Jennejohn
> <gljennjohn at googlemail.com>wrote:
>
> > On Fri, 24 Dec 2010 18:17:18 +0330
> > Mohammad Hedayati <hedayati.mo at gmail.com> wrote:
> >
> > > I'm writing a simple char device. So far everything went so good
> > > (read/write), but here I'm going to add support for ioctl.
> > >
> > > int
> > > ioctl(struct cdev *dev, u_long cmd, caddr_t data, int flags, struct
> > thread *td)
> > > {
> > > int error = 0;
> > > uprintf("Here...\n");
> > > return(error);
> > > }
> > > and I'm calling it here:
> > >
> > > len = ioctl(cd, 0);
> > > perror("ioctl");
> > >
> > > but when runnig it says:
> > >
> > > ioctl: Inappropriate ioctl for device
> >
> > Carefully read ioctl(2) and consider that you're passing in 0 as the cmd.
> > If you still don't understand your error, post again.
> >
> > Hint: look at /sys/kern/sys_generic.c:^ioctl
> >
> > --
> > Gary Jennejohn
> >
>
> It was a misspelling, I'm doing as bellow, if you mean the u_long.
>
> unsinged long cmd = 0;
> len = ioctl(cd, cmd);
>
No, that isn't what I meant. Read the kernel code - cmd = 0 is not
legal.
--
Gary Jennejohn
More information about the freebsd-hackers
mailing list