History log of /seL4-camkes-master/projects/musllibc/src/aio/aio_suspend.c
Revision Date Author Comments
# 5451d957 02-Mar-2015 Rich Felker <dalias@aerifal.cx>

make aio_suspend a cancellation point and properly handle cancellation


# 0fc317d8 02-Mar-2015 Rich Felker <dalias@aerifal.cx>

factor cancellation cleanup push/pop out of futex __timedwait function

previously, the __timedwait function was optionally a cancellation
point depending on whether it was passed a pointer to a cleaup
function and context to register. as of now, only one caller actually
used such a cleanup function (and it may face removal soon); most
callers either passed a null pointer to disable cancellation or a
dummy cleanup function.

now, __timedwait is never a cancellation point, and __timedwait_cp is
the cancellable version. this makes the intent of the calling code
more obvious and avoids ugly dummy functions and long argument lists.


# 4e8a3561 12-Feb-2015 Rich Felker <dalias@aerifal.cx>

overhaul aio implementation for correctness

previously, aio operations were not tracked by file descriptor; each
operation was completely independent. this resulted in non-conforming
behavior for non-seekable/append-mode writes (which are required to be
ordered) and made it impossible to implement aio_cancel, which in turn
made closing file descriptors with outstanding aio operations unsafe.

the new implementation is significantly heavier (roughly twice the
size, and seems to be slightly slower) and presently aims mainly at
correctness, not performance.

most of the public interfaces have been moved into a single file,
aio.c, because there is little benefit to be had from splitting them.
whenever any aio functions are used, aio_cancel and the internal
queue lifetime management and fd-to-queue mapping code must be linked,
and these functions make up the bulk of the code size.

the close function's interaction with aio is implemented with weak
alias magic, to avoid pulling in heavy aio cancellation code in
programs that don't use aio, and the expensive cancellation path
(which includes signal blocking) is optimized out when there are no
active aio queues.


# 36c30c4d 04-Sep-2014 Szabolcs Nagy <nsz@port70.net>

add missing legacy LFS *64 symbol aliases

versionsort64, aio*64 and lio*64 symbols were missing, they are
only needed for glibc ABI compatibility, on the source level
dirent.h and aio.h already redirect them.


# 13cd9695 13-Sep-2011 Rich Felker <dalias@aerifal.cx>

fix various errors in function signatures/prototypes found by nsz


# b4de6f93 08-Sep-2011 Rich Felker <dalias@aerifal.cx>

implement POSIX asynchronous io

some features are not yet supported, and only minimal testing has been
performed. should be considered experimental at this point.