History log of /seL4-refos-master/libs/libmuslc/src/aio/lio_listio.c
Revision Date Author Comments
# 2af3006b 29-Jun-2019 Samuel Holland <samuel@sholland.org>

musllibc: fix restrict violation warnings

Cherry-picking commit e0eee3ceefd550724058ffbdf878e9eb06e18f18 from
musllibc mainline. Original comment: The old/new parameters to
pthread_sigmask, sigprocmask, and setitimer are marked restrict, so
passing the same address to both is prohibited. Modify callers of
these functions to use a separate object for each argument.

Signed-off-by: Axel Heider <axelheider@gmx.de>


# 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.


# 83dc6eb0 05-Jul-2014 Rich Felker <dalias@aerifal.cx>

eliminate use of cached pid from thread structure

the main motivation for this change is to remove the assumption that
the tid of the main thread is also the pid of the process. (the value
returned by the set_tid_address syscall was used to fill both fields
despite it semantically being the tid.) this is historically and
presently true on linux and unlikely to change, but it conceivably
could be false on other systems that otherwise reproduce the linux
syscall api/abi.

only a few parts of the code were actually still using the cached pid.
in a couple places (aio and synccall) it was a minor optimization to
avoid a syscall. caching could be reintroduced, but lazily as part of
the public getpid function rather than at program startup, if it's
deemed important for performance later. in other places (cancellation
and pthread_kill) the pid was completely unnecessary; the tkill
syscall can be used instead of tgkill. this is actually a rather
subtle issue, since tgkill is supposedly a solution to race conditions
that can affect use of tkill. however, as documented in the commit
message for commit 7779dbd2663269b465951189b4f43e70839bc073, tgkill
does not actually solve this race; it just limits it to happening
within one process rather than between processes. we use a lock that
avoids the race in pthread_kill, and the use in the cancellation
signal handler is self-targeted and thus not subject to tid reuse
races, so both are safe regardless of which syscall (tgkill or tkill)
is used.


# b20760c0 14-Sep-2013 Szabolcs Nagy <nsz@port70.net>

support configurable page size on mips, powerpc and microblaze

PAGE_SIZE was hardcoded to 4096, which is historically what most
systems use, but on several archs it is a kernel config parameter,
user space can only know it at execution time from the aux vector.

PAGE_SIZE and PAGESIZE are not defined on archs where page size is
a runtime parameter, applications should use sysconf(_SC_PAGE_SIZE)
to query it. Internally libc code defines PAGE_SIZE to libc.page_size,
which is set to aux[AT_PAGESZ] in __init_libc and early in __dynlink
as well. (Note that libc.page_size can be accessed without GOT, ie.
before relocations are done)

Some fpathconf settings are hardcoded to 4096, these should be actually
queried from the filesystem using statfs.


# 8600849d 15-Jun-2013 Rich Felker <dalias@aerifal.cx>

fix uninitialized variable in lio (aio) code


# a753f7fe 13-Jan-2013 Szabolcs Nagy <nsz@port70.net>

fix lio_listio return value in LIO_WAIT mode


# b427c822 04-Dec-2012 Rich Felker <dalias@aerifal.cx>

use alternate argument syntax for restrict with lio_listio

for some reason I have not been able to determine, gcc 3.2 rejects the
array notation. this seems to be a gcc bug, but since it's easy to
work around, let's do the workaround and avoid gratuitously requiring
newer compilers.


# efd4d87a 08-Nov-2012 Rich Felker <dalias@aerifal.cx>

clean up sloppy nested inclusion from pthread_impl.h

this mirrors the stdio_impl.h cleanup. one header which is not
strictly needed, errno.h, is left in pthread_impl.h, because since
pthread functions return their error codes rather than using errno,
nearly every single pthread function needs the errno constants.

in a few places, rather than bringing in string.h to use memset, the
memset was replaced by direct assignment. this seems to generate much
better code anyway, and makes many functions which were previously
non-leaf functions into leaf functions (possibly eliminating a great
deal of bloat on some platforms where non-leaf functions require ugly
prologue and/or epilogue).


# 400c5e5c 06-Sep-2012 Rich Felker <dalias@aerifal.cx>

use restrict everywhere it's required by c99 and/or posix 2008

to deal with the fact that the public headers may be used with pre-c99
compilers, __restrict is used in place of restrict, and defined
appropriately for any supported compiler. we also avoid the form
[restrict] since older versions of gcc rejected it due to a bug in the
original c99 standard, and instead use the form *restrict.


# 144c951b 15-Sep-2011 Rich Felker <dalias@aerifal.cx>

fix idiotic const-correctness error in lio_listio

i blame this one on posix for using hideous const-qualified double
pointers which are unusable without hideous casts.


# 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.