summaryrefslogtreecommitdiff
path: root/include/pthread.h
AgeCommit message (Collapse)AuthorFilesLines
2012-02-29use c++-friendly initializers for pthread initializer definitionsRich Felker1-3/+3
these will also avoid obnoxious warnings with gcc -Wbraces.
2012-02-09replace bad cancellation cleanup abi with a sane oneRich Felker1-16/+9
the old abi was intended to duplicate glibc's abi at the expense of being ugly and slow, but it turns out glib was not even using that abi except on non-gcc-compatible compilers (which it doesn't even support) and was instead using an exceptions-in-c/unwind-based approach whose abi we could not duplicate anyway without nasty dwarf2/unwind integration. the new abi is copied from a very old glibc abi, which seems to still be supported/present in current glibc. it avoids all unwinding, whether by sjlj or exceptions, and merely maintains a linked list of cleanup functions to be called from the context of pthread_exit. i've made some care to ensure that longjmp out of a cleanup function should work, even though it is not required to. this change breaks abi compatibility with programs which were using pthread cancellation, which is unfortunate, but that's why i'm making the change now rather than later. considering that most pthread features have not been usable until recently anyway, i don't see it as a major issue at this point.
2011-08-14macro for pthread_equalRich Felker1-0/+2
no sense bloating apps with a function call for an equality comparison...
2011-06-06use __attribute__((const)) for errno and pthread_self if __GNUC__ is definedRich Felker1-0/+3
this is not too ugly and should result in significant code size and performance improvements for many programs.
2011-05-30implement pthread_[sg]etconcurrency.Rich Felker1-0/+3
there is a resource limit of 0 bits to store the concurrency level requested. thus any positive level exceeds a resource limit, resulting in EAGAIN. :-)
2011-04-01fix misspelled PTHREAD_CANCELED constantRich Felker1-1/+1
2011-03-25match glibc/lsb cancellation abi on i386Rich Felker1-0/+2
glibc made the ridiculous choice to use pass-by-register calling convention for these functions, which is impossible to duplicate directly on non-gcc compilers. instead, we use ugly asm to wrap and convert the calling convention. presumably this works with every compiler anyone could potentially want to use.
2011-03-17implement robust mutexesRich Felker1-0/+1
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.
2011-03-12pthread.h needs clockid_tRich Felker1-0/+1
actually it gets this from time.h if _POSIX_C_SOURCE or any other feature test macros are defined, but it breaks if they're not.
2011-03-11missing const in some pthread_attr_* prototypesRich Felker1-8/+8
2011-03-07add prototypes for pthread_condattr_* and pthread_rwlockattr_*Rich Felker1-0/+12
2011-02-18add pthread_atfork interfaceRich Felker1-0/+2
note that this presently does not handle consistency of the libc's own global state during forking. as per POSIX 2008, if the parent process was threaded, the child process may only call async-signal-safe functions until one of the exec-family functions is called, so the current behavior is believed to be conformant even if non-ideal. it may be improved at some later time.
2011-02-17reorganize pthread data structures and move the definitions to alltypes.hRich Felker1-45/+12
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.
2011-02-16add to pthread.h: pthread_mutex_timedlock and sched.h, time.hRich Felker1-1/+3
2011-02-12initial check-in, version 0.5.0v0.5.0Rich Felker1-0/+216