about summary refs log tree commit diff
path: root/src/thread/pthread_mutex_trylock.c
Commit message (Collapse)AuthorAgeFilesLines
* replace all remaining internal uses of pthread_self with __pthread_selfRich Felker2014-06-101-1/+1
| | | | | | | | | | prior to version 1.1.0, the difference between pthread_self (the public function) and __pthread_self (the internal macro or inline function) was that the former would lazily initialize the thread pointer if it was not already initialized, whereas the latter would crash in this case. since lazy initialization is no longer supported, use of pthread_self no longer makes sense; it simply generates larger, slower code.
* recovering ownerdead robust mutex must reset recursive lock countRich Felker2011-10-031-0/+1
|
* use count=0 instead of 1 for recursive mutex with only one lock referenceRich Felker2011-10-031-2/+0
| | | | | | | this simplifies the code paths slightly, but perhaps what's nicer is that it makes recursive mutexes fully reentrant, i.e. locking and unlocking from a signal handler works even if the interrupted code was in the middle of locking or unlocking.
* avoid accessing mutex memory after atomic unlockRich Felker2011-08-021-7/+7
| | | | | | | this change is needed to fix a race condition and ensure that it's possible to unlock and destroy or unmap the mutex as soon as pthread_mutex_lock succeeds. POSIX explicitly gives such an example in the rationale and requires an implementation to allow such usage.
* debloat: use __syscall instead of syscall where possibleRich Felker2011-04-171-1/+1
| | | | | | don't waste time (and significant code size due to function call overhead!) setting errno when the result of a syscall does not matter or when it can't fail.
* cheap trick to further optimize locking normal mutexesRich Felker2011-04-141-1/+1
|
* revert mutex "optimization" that turned out to be worseRich Felker2011-03-291-1/+1
|
* global cleanup to use the new syscall interfaceRich Felker2011-03-201-2/+2
|
* implement robust mutexesRich Felker2011-03-171-3/+35
| | | | | | some of this code should be cleaned up, e.g. using macros for some of the bit flags, masks, etc. nonetheless, the code is believed to be working and correct at this point.
* unify lock and owner fields of mutex structureRich Felker2011-03-171-3/+2
| | | | | | this change is necessary to free up one slot in the mutex structure so that we can use doubly-linked lists in the implementation of robust mutexes.
* optimize contended normal mutex case; add int compare-and-swap atomicRich Felker2011-03-171-1/+1
|
* simplify logic, slightly optimize contended case for non-default mutex typesRich Felker2011-03-161-4/+2
|
* correct error returns for error-checking mutexesRich Felker2011-03-161-1/+1
|
* simplify and optimize pthread_mutex_trylockRich Felker2011-03-081-17/+16
|
* fix and optimize non-default-type mutex behaviorRich Felker2011-03-081-15/+12
| | | | | | | | | problem 1: mutex type from the attribute was being ignored by pthread_mutex_init, so recursive/errorchecking mutexes were never being used at all. problem 2: ownership of recursive mutexes was not being enforced at unlock time.
* reorganize pthread data structures and move the definitions to alltypes.hRich Felker2011-02-171-13/+13
| | | | | | | | this allows sys/types.h to provide the pthread types, as required by POSIX. this design also facilitates forcing ABI-compatible sizes in the arch-specific alltypes.h, while eliminating the need for developers changing the internals of the pthread types to poke around with arch-specific headers they may not be able to test.
* initial check-in, version 0.5.0 v0.5.0Rich Felker2011-02-121-0/+28