libs/libc/aio: fix aio_cancel compatible issue
1. make the aio_cancel implementation can pass the ltp/open_posix_testsuite/aio_cancel testcases 2. the modification are referred to https://pubs.opengroup.org/onlinepubs/9699919799/functions/aio_cancel.html Signed-off-by: guoshichao <guoshichao@xiaomi.com>
This commit is contained in:
parent
cf6a134684
commit
d5f45dc33b
@ -81,6 +81,12 @@
|
|||||||
|
|
||||||
int aio_cancel(int fildes, FAR struct aiocb *aiocbp)
|
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 *aioc;
|
||||||
FAR struct aio_container_s *next;
|
FAR struct aio_container_s *next;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
@ -95,7 +101,7 @@ int aio_cancel(int fildes, FAR struct aiocb *aiocbp)
|
|||||||
|
|
||||||
ret = AIO_ALLDONE;
|
ret = AIO_ALLDONE;
|
||||||
sched_lock();
|
sched_lock();
|
||||||
ret = aio_lock();
|
aio_lock();
|
||||||
|
|
||||||
if (aiocbp)
|
if (aiocbp)
|
||||||
{
|
{
|
||||||
|
@ -61,14 +61,15 @@
|
|||||||
#undef _POSIX_FSYNC
|
#undef _POSIX_FSYNC
|
||||||
#define _POSIX_SYNCHRONIZED_IO 1
|
#define _POSIX_SYNCHRONIZED_IO 1
|
||||||
|
|
||||||
|
#define _POSIX_VERSION 201712L
|
||||||
|
#define _POSIX_PRIORITIZED_IO _POSIX_VERSION
|
||||||
|
|
||||||
#ifdef CONFIG_FS_AIO
|
#ifdef CONFIG_FS_AIO
|
||||||
# define _POSIX_ASYNCHRONOUS_IO 1
|
# define _POSIX_ASYNCHRONOUS_IO _POSIX_VERSION
|
||||||
#else
|
#else
|
||||||
# undef _POSIX_ASYNCHRONOUS_IO
|
# undef _POSIX_ASYNCHRONOUS_IO
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#undef _POSIX_PRIORITIZED_IO
|
|
||||||
|
|
||||||
#ifdef CONFIG_SCHED_SPORADIC
|
#ifdef CONFIG_SCHED_SPORADIC
|
||||||
# define _POSIX_SPORADIC_SERVER 1
|
# define _POSIX_SPORADIC_SERVER 1
|
||||||
# define _POSIX_THREAD_SPORADIC_SERVER 1
|
# define _POSIX_THREAD_SPORADIC_SERVER 1
|
||||||
|
@ -215,6 +215,14 @@ long sysconf(int name)
|
|||||||
|
|
||||||
switch (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:
|
case _SC_CLK_TCK:
|
||||||
return CLOCKS_PER_SEC;
|
return CLOCKS_PER_SEC;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user