DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
"In computing, 'Not a typewriter' or ENOTTY is an error code defined in the errno.h found on many Unix systems. This code is now used to indicate that an invalid ioctl (input/output control) number was specified in an ioctl system call." Reference: https://en.wikipedia.org/wiki/Not_a_typewriter
NuttX
In ioctl() implementations in NuttX, -ENOTTY is always returned if the ioctl() command is not recognized. You will often see driver ioctl() implement ions with a general structure similar to the following:
int driver_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
{
int ret;
switch (cmd)
{
...
default:
ret = -ENOTTY;
break;
}
}
return ret;
}
Note that -ENOTTY is returned internally in NuttX. This will subsequently be used to set the errno value to ENOTTY and to return -1 to indicate the error condition.
ERRORS
These are the return values from a Linux ioctl() call:
...
Reference: https://lore.kernel.org/patchwork/patch/258361/
How is this useful?
Knowing that no error occurred but the ioctl() command was not recognized is a useful piece of information. Suppose, for example, I have nfds open character drivers in an array fd[]. Then I could do something like this:
int do_command(FAR int *fd, int nfds, int cmd){ int ret; int i;
/* Try all file descriptors */
for (i = 0; i < nfds; i++) {
ret = ioctl(fd[i], cmd, 0ul); /* No argument in this example */ if (ret < 0) {
int errcode = errno;
/* Try the next file descriptor if this one return ENOTTY */
if (errcode != ENOTTY) { /* Other errors, including EINVAL, are fatal */
return -errcode }
}
else if (ret >= 0)
{ return OK; /* Success! */ } }
return -ENOENT;}