Messages in this thread | | | Date | Tue, 7 Jul 2015 01:25:09 +0900 | Subject | Re: [Question] Usage of ENOTSUPP error code | From | Masahiro Yamada <> |
| |
Hi Clemens,
Thanks for your clarification.
2015-07-06 16:37 GMT+09:00 Clemens Ladisch <clemens@ladisch.de>: > Masahiro Yamada wrote: >> I noticed many drivers return -ENOTSUPP on error. >> >> I assume ENOTSUPP is defined in include/linux/errno.h >> as follows: >> >> /* Defined for the NFSv3 protocol */ >> ... >> #define ENOTSUPP 524 /* Operation is not supported */ >> >> If so, should ENOTSUPP be only used for NFS-related errors? > > There is typcially no such restriction.
Maybe, shoulld such a confusing comment be deleted?
> However, the problem with ENOTSUPP is that it is not defined in > the uapi header, so it will not be known to user space programs. > >> In fact, ENOTSUPP is used by various drivers >> including non-network ones such as pinctrl, USB, etc. > > If it is possible that the error code shows up for user space, ENOTSUPP > should not be used. Alternatives would be something like ENOTSUP, > EOPNOTSUPP, ENOIOCTLCMD, ENOSYS, or EINVAL. >
Oh dear, we have ENOTSUP as well as ENOTSUPP... but, it looks like ENOTSUP is only defined by arch/parisc/include/uapi/asm/errno.h, so it is not globally available.
EOPNOTSUPP is also accompanied with a comment that implies it is intended for network.
After all, I often use EINVAL when unsupported operations are requested.
-- Best Regards Masahiro Yamada
| |