diff --git a/fs/aio/aio_cancel.c b/fs/aio/aio_cancel.c index 8337149f51d..ac8b4119a9c 100644 --- a/fs/aio/aio_cancel.c +++ b/fs/aio/aio_cancel.c @@ -81,6 +81,12 @@ int aio_cancel(int fildes, FAR struct aiocb *aiocbp) { + if (fildes < 0) + { + set_errno(EBADF); + return ERROR; + } + FAR struct aio_container_s *aioc; FAR struct aio_container_s *next; pid_t pid; @@ -95,7 +101,7 @@ int aio_cancel(int fildes, FAR struct aiocb *aiocbp) ret = AIO_ALLDONE; sched_lock(); - ret = aio_lock(); + aio_lock(); if (aiocbp) { diff --git a/include/unistd.h b/include/unistd.h index 5bd2dfe762a..5d7eefcd574 100644 --- a/include/unistd.h +++ b/include/unistd.h @@ -61,14 +61,15 @@ #undef _POSIX_FSYNC #define _POSIX_SYNCHRONIZED_IO 1 +#define _POSIX_VERSION 201712L +#define _POSIX_PRIORITIZED_IO _POSIX_VERSION + #ifdef CONFIG_FS_AIO -# define _POSIX_ASYNCHRONOUS_IO 1 +# define _POSIX_ASYNCHRONOUS_IO _POSIX_VERSION #else # undef _POSIX_ASYNCHRONOUS_IO #endif -#undef _POSIX_PRIORITIZED_IO - #ifdef CONFIG_SCHED_SPORADIC # define _POSIX_SPORADIC_SERVER 1 # define _POSIX_THREAD_SPORADIC_SERVER 1 diff --git a/libs/libc/unistd/lib_sysconf.c b/libs/libc/unistd/lib_sysconf.c index 8246a2eb176..4890a7290b2 100644 --- a/libs/libc/unistd/lib_sysconf.c +++ b/libs/libc/unistd/lib_sysconf.c @@ -215,6 +215,14 @@ long sysconf(int name) switch (name) { +#ifdef CONFIG_FS_AIO + case _SC_ASYNCHRONOUS_IO: + return _POSIX_ASYNCHRONOUS_IO; +#endif + case _SC_PRIORITIZED_IO: + return _POSIX_PRIORITIZED_IO; + case _SC_AIO_MAX: + return _POSIX_AIO_MAX; case _SC_CLK_TCK: return CLOCKS_PER_SEC;