cvs commit: src/lib/libpthread pthread.map
src/lib/libpthread/support thr_support.c
src/lib/libpthread/thread thr_info.c thr_init.c thr_kern.c
thr_kill.c thr_private.h thr_sig.c thr_sigaction.c
thr_sigmask.c thr_sigpending.c thr
David Xu
davidxu at freebsd.org
Sat Jun 28 02:58:41 PDT 2003
Forgot to say,
Reviewd by: deischen
David Xu
----- Original Message -----=20
From: "David Xu" <davidxu at FreeBSD.org>
To: <src-committers at FreeBSD.org>; <cvs-src at FreeBSD.org>; =
<cvs-all at FreeBSD.org>
Sent: Saturday, June 28, 2003 5:55 PM
Subject: cvs commit: src/lib/libpthread pthread.map =
src/lib/libpthread/support thr_support.c src/lib/libpthread/thread =
thr_info.c thr_init.c thr_kern.c thr_kill.c thr_private.h thr_sig.c =
thr_sigaction.c thr_sigmask.c thr_sigpending.c thr_sigprocmask.c =
thr_sigsuspend.c ...
> davidxu 2003/06/28 02:55:02 PDT
>=20
> FreeBSD src repository
>=20
> Modified files:
> lib/libpthread pthread.map=20
> lib/libpthread/support thr_support.c=20
> lib/libpthread/thread thr_info.c thr_init.c thr_kern.c=20
> thr_kill.c thr_private.h thr_sig.c=20
> thr_sigaction.c thr_sigmask.c=20
> thr_sigpending.c thr_sigprocmask.c=20
> thr_sigsuspend.c thr_sigwait.c=20
> Log:
> o Use a daemon thread to monitor signal events in kernel, if pending
> 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.
> =20
> 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.
> =20
> 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.
> =20
> o Context signal mask is now only used when delivering signals, =
thread's
> current signal mask is always the one in pthread structure.
> =20
> 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.
> =20
> o At signal delivering time, not only pending signals in thread will =
be
> scanned, process's pending signals will be scanned too.
> =20
> 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.
> =20
> o Two additional POSIX APIs are implemented, sigwaitinfo() and =
sigtimedwait().
> =20
> o Signal code locking is better than previous, there is fewer race =
conditions.
> =20
> o Temporary disable most of code in _kse_single_thread as it is not =
safe
> after fork().
> =20
> Revision Changes Path
> 1.2 +4 -0 src/lib/libpthread/pthread.map
> 1.3 +3 -0 src/lib/libpthread/support/thr_support.c
> 1.24 +16 -1 src/lib/libpthread/thread/thr_info.c
> 1.56 +4 -39 src/lib/libpthread/thread/thr_init.c
> 1.72 +138 -96 src/lib/libpthread/thread/thr_kern.c
> 1.16 +1 -1 src/lib/libpthread/thread/thr_kill.c
> 1.91 +19 -14 src/lib/libpthread/thread/thr_private.h
> 1.56 +443 -345 src/lib/libpthread/thread/thr_sig.c
> 1.19 +10 -3 src/lib/libpthread/thread/thr_sigaction.c
> 1.14 +11 -14 src/lib/libpthread/thread/thr_sigmask.c
> 1.13 +6 -1 src/lib/libpthread/thread/thr_sigpending.c
> 1.16 +3 -2 src/lib/libpthread/thread/thr_sigprocmask.c
> 1.19 +15 -4 src/lib/libpthread/thread/thr_sigsuspend.c
> 1.26 +143 -69 src/lib/libpthread/thread/thr_sigwait.c
>
More information about the cvs-src
mailing list