musl - an implementation of the standard library for Linux-based systems
Go to file
Rich Felker 83dc6eb087 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 7779dbd266, 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.
2014-07-05 23:29:55 -04:00
arch fix regression in mips dynamic linker 2014-06-30 01:18:14 -04:00
crt
dist
include implement fmtmsg function 2014-06-21 19:24:15 -04:00
lib
src eliminate use of cached pid from thread structure 2014-07-05 23:29:55 -04:00
tools
.gitignore
COPYRIGHT
INSTALL add note to INSTALL file about gcc 4.9.0 not being supported 2014-06-25 14:16:15 -04:00
Makefile add tarball-producing targets to Makefile for ease of release 2014-06-25 16:14:37 -04:00
README update version reference in the README file 2014-06-25 14:16:53 -04:00
VERSION release 1.1.3 2014-06-25 16:18:05 -04:00
WHATSNEW release 1.1.3 2014-06-25 16:18:05 -04:00
configure

README

    musl libc

musl, pronounced like the word "mussel", is an MIT-licensed
implementation of the standard C library targetting the Linux syscall
API, suitable for use in a wide range of deployment environments. musl
offers efficient static and dynamic linking support, lightweight code
and low runtime overhead, strong fail-safe guarantees under correct
usage, and correctness in the sense of standards conformance and
safety. musl is built on the principle that these goals are best
achieved through simple code that is easy to understand and maintain.

The 1.1 release series for musl features coverage for all interfaces
defined in ISO C99 and POSIX 2008 base, along with a number of
non-standardized interfaces for compatibility with Linux, BSD, and
glibc functionality.

For basic installation instructions, see the included INSTALL file.
Information on full musl-targeted compiler toolchains, system
bootstrapping, and Linux distributions built on musl can be found on
the project website:

    http://www.musl-libc.org/