|
|
|
@ -15,6 +15,8 @@ int aio_suspend(const struct aiocb *const cbs[], int cnt, const struct timespec |
|
|
|
int nzcnt = 0; |
|
|
|
const struct aiocb *cb = 0; |
|
|
|
|
|
|
|
pthread_testcancel(); |
|
|
|
|
|
|
|
if (cnt<0) { |
|
|
|
errno = EINVAL; |
|
|
|
return -1; |
|
|
|
@ -61,10 +63,14 @@ int aio_suspend(const struct aiocb *const cbs[], int cnt, const struct timespec |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
ret = __timedwait(pfut, expect, CLOCK_MONOTONIC, ts?&at:0, 1); |
|
|
|
ret = __timedwait_cp(pfut, expect, CLOCK_MONOTONIC, ts?&at:0, 1); |
|
|
|
|
|
|
|
if (ret) { |
|
|
|
errno = ret==ETIMEDOUT ? EAGAIN : ret; |
|
|
|
switch (ret) { |
|
|
|
case ETIMEDOUT: |
|
|
|
ret = EAGAIN; |
|
|
|
case ECANCELED: |
|
|
|
case EINTR: |
|
|
|
errno = ret; |
|
|
|
return -1; |
|
|
|
} |
|
|
|
} |
|
|
|
|