This oft-misused errno
, "Operation not supported by device", is supposed to mean only one thing: you are trying to perform a class
on a device
that doesn't support
that type. For instance, with cdevsw
operations, some devices may have no read or write handlers, so attempted to read
(2) or write
(2) on one of those devices should give you an ENODEV error.
The mistake comes when a programmer gets confused about this and ENOTTY. ENOTTY is only for the error of improper ioctl(2) calls for the device, and ENODEV is only for everything but ioctl.