提交 c00cdefa 编写于 作者: R Rich Felker

on failed aio submission, set aiocb error and return value

it's not clear whether this is required, but it seems arguable that it
should happen. for example aio_suspend is supposed to return
immediately if any of the operations has "completed", which includes
ending with an error status asynchonously and might also be
interpreted to include doing so synchronously.
上级 a9a9882f
......@@ -280,6 +280,8 @@ static int submit(struct aiocb *cb, int op)
if (!q) {
if (errno != EBADF) errno = EAGAIN;
cb->__ret = -1;
cb->__err = errno;
return -1;
}
q->ref++;
......@@ -303,8 +305,8 @@ static int submit(struct aiocb *cb, int op)
if (pthread_create(&td, &a, io_thread_func, &args)) {
pthread_mutex_lock(&q->lock);
__aio_unref_queue(q);
errno = EAGAIN;
ret = -1;
cb->__err = errno = EAGAIN;
cb->__ret = ret = -1;
}
pthread_sigmask(SIG_SETMASK, &origmask, 0);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册