summaryrefslogtreecommitdiffstats
path: root/lib/libpthread/pthread.map
Commit message (Collapse)AuthorAgeFilesLines
* Use a generic way to back threads out of wait queues when handlingdeischen2004-12-181-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | signals instead of having more intricate knowledge of thread state within signal handling. Simplify signal code because of above (by David Xu). Use macros for libpthread usage of pthread_cleanup_push() and pthread_cleanup_pop(). This removes some instances of malloc() and free() from the semaphore and pthread_once() implementations. When single threaded and forking(), make sure that the current thread's signal mask is inherited by the forked thread. Use private mutexes for libc and libpthread. Signals are deferred while threads hold private mutexes. This fix also breaks www/linuxpluginwrapper; a patch that fixes it is at http://people.freebsd.org/~deischen/kse/linuxpluginwrapper.diff Fix race condition in condition variables where handling a signal (pthread_kill() or kill()) may not see a wakeup (pthread_cond_signal() or pthread_cond_broadcast()). In collaboration with: davidxu
* Add a wrapper for execve(). The exec'd process must be started withdeischen2004-09-261-0/+2
| | | | | | | | | | | | | | the signal mask and pending signals of the calling thread. These are stored in userland in libpthread. There is a small race condition in this patch which could cause problems if a signal arrives after setting the (kernel) signal mask and before exec'ing. The thread's set of pending signals also are not yet installed in the exec'd process. Both of these will be corrected with the addition of a special syscall. Reported & Tested by: Joost Bekkers <joost at jodocus dot org> Reviewed by: julian, davidxu
* 1. Add macro DTV_OFFSET to calculate dtv offset in tcb.davidxu2004-08-161-3/+19
| | | | 2. Export symbols needed by debugger.
* Export necessary symbols to debugger.davidxu2004-07-131-7/+4
|
* Add sem_timedwait to the symbol map, otherwise the libc version willdeischen2004-02-101-0/+2
| | | | get used.
* Implement sigaltstack() as per-threaded. Current only scope process threaddavidxu2003-12-291-0/+2
| | | | | | | | is supported, for scope system process, kernel signal bits need to be changed. Reviewed by: deischen Tested on : i386 amd64 ia64
* Add cancellation points for accept() and connect().deischen2003-12-091-0/+4
|
* Add an implementation for pthread_atfork().deischen2003-11-041-0/+2
| | | | | | | | Aside from the POSIX requirements for pthread_atfork(), when fork()ing, take the malloc lock to keep malloc state consistent in the child. Reviewed by: davidxu
* Add code to support pthread spin lock.davidxu2003-09-091-0/+10
| | | | Reviewed by: deischen
* Add small piece of code to support pthread_rwlock_timedrdlock anddavidxu2003-09-061-0/+4
| | | | pthread_rwlock_timedrwlock.
* Add code to support barrier synchronous object and implementdavidxu2003-09-041-0/+17
| | | | | | pthread_mutex_timedlock(). Reviewed by: deischen
* Override libc function raise(), in threading mode, raise() willdavidxu2003-07-191-0/+2
| | | | | | send signal to current thread. Reviewed by: deischen
* o Use a daemon thread to monitor signal events in kernel, if pendingdavidxu2003-06-281-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | signals were changed in kernel, it will retrieve the pending set and try to find a thread to dispatch the signal. The dispatching process can be rolled back if the signal is no longer in kernel. o Create two functions _thr_signal_init() and _thr_signal_deinit(), all signal action settings are retrieved from kernel when threading mode is turned on, after a fork(), child process will reset them to user settings by calling _thr_signal_deinit(). when threading mode is not turned on, all signal operations are direct past to kernel. o When a thread generated a synchoronous signals and its context returned from completed list, UTS will retrieve the signal from its mailbox and try to deliver the signal to thread. o Context signal mask is now only used when delivering signals, thread's current signal mask is always the one in pthread structure. o Remove have_signals field in pthread structure, replace it with psf_valid in pthread_signal_frame. when psf_valid is true, in context switch time, thread will backout itself from some mutex/condition internal queues, then begin to process signals. when a thread is not at blocked state and running, check_pending indicates there are signals for the thread, after preempted and then resumed time, UTS will try to deliver signals to the thread. o At signal delivering time, not only pending signals in thread will be scanned, process's pending signals will be scanned too. o Change sigwait code a bit, remove field sigwait in pthread_wait_data, replace it with oldsigmask in pthread structure, when a thread calls sigwait(), its current signal mask is backuped to oldsigmask, and waitset is copied to its signal mask and when the thread gets a signal in the waitset range, its current signal mask is restored from oldsigmask, these are done in atomic fashion. o Two additional POSIX APIs are implemented, sigwaitinfo() and sigtimedwait(). o Signal code locking is better than previous, there is fewer race conditions. o Temporary disable most of code in _kse_single_thread as it is not safe after fork().
* Attempt to eliminate PLT relocations from rwlock aquire/releasekan2003-05-301-0/+296
path, making them suitable for direct use by the dynamic loader. Register libpthread-specific locking API with rtld on startup. This still has some rough edges with signals which should be addresses later. Approved by: re (scottl)
OpenPOWER on IntegriCloud