aboutsummaryrefslogtreecommitdiff
path: root/src/thread/pthread_getschedparam.c (follow)
Commit message (Expand)AuthorAgeFilesLines
* make thread killlock async-signal-safe for pthread_kill•••pthread_kill is required to be AS-safe. that requirement can't be met if the target thread's killlock can be taken in contexts where application-installed signal handlers can run. block signals around use of this lock in all pthread_* functions which target a tid, and reorder blocking/unblocking of signals in pthread_exit so that they're blocked whenever the killlock is held. Rich Felker2020-07-061-0/+3
* split internal lock API out of libc.h, creating lock.h•••this further reduces the number of source files which need to include libc.h and thereby be potentially exposed to libc global state and internals. this will also facilitate further improvements like adding an inline fast-path, if we want to do so later. Rich Felker2018-09-121-0/+1
* improve pthread_exit synchronization with functions targeting tid•••if the last thread exited via pthread_exit, the logic that marked it dead did not account for the possibility of it targeting itself via atexit handlers. for example, an atexit handler calling pthread_kill(pthread_self(), SIGKILL) would return success (previously, ESRCH) rather than causing termination via the signal. move the release of killlock after the determination is made whether the exiting thread is the last thread. in the case where it's not, move the release all the way to the end of the function. this way we can clear the tid rather than spending storage on a dedicated dead-flag. clearing the tid is also preferable in that it hardens against inadvertent use of the value after the thread has terminated but before it is joined. Rich Felker2018-05-051-1/+1
* consistently use the LOCK an UNLOCK macros•••In some places there has been a direct usage of the functions. Use the macros consistently everywhere, such that it might be easier later on to capture the fast path directly inside the macro and only have the call overhead on the slow path. Jens Gustedt2018-01-091-2/+2
* fix syscall argument bug in pthread_getschedparam•••the address of the pointer to the sched param, rather than the pointer, was being passed to the kernel. Rich Felker2013-06-261-1/+1
* add support for thread scheduling (POSIX TPS option)•••linux's sched_* syscalls actually implement the TPS (thread scheduling) functionality, not the PS (process scheduling) functionality which the sched_* functions are supposed to have. omitting support for the PS option (and having the sched_* interfaces fail with ENOSYS rather than omitting them, since some broken software assumes they exist) seems to be the only conforming way to do this on linux. Rich Felker2012-11-111-0/+17