David Xu
04a57d2c83
Resolve __error()'s PLT early so that it needs not to be resolved again,
...
otherwise rwlock is recursivly called when signal happens and the __error
was never resolved before.
2008-03-21 02:31:55 +00:00
Ruslan Ermilov
a1292a02d3
pthread_mutexattr_destroy() was accidentally broken in last revision,
...
unbreak it. We should really start compiling this with warnings.
2008-03-20 11:47:08 +00:00
David Xu
8c38215f50
Preserve application code's errno in rtld locking code, it attemps to keep
...
any case safe.
2008-03-20 09:35:44 +00:00
David Xu
48ebe2ebc4
Make pthread_mutexattr_settype to return error number directly and
...
conformant to POSIX specification.
Bug reported by: modelnine at modelnine dt org
2008-03-20 08:27:14 +00:00
David Xu
c8a4eae56f
don't reduce new thread's refcount if current thread can not set cpuset
...
for it, since the new thread will reduce it by itself.
2008-03-19 09:33:07 +00:00
David Xu
519e8d87bb
- Trim trailing spaces.
...
- Use a different sigmask variable name to avoid confusing.
2008-03-19 08:13:04 +00:00
David Xu
86a06c6000
if passed thread pointer is equal to current thread, pass -1 to kernel
...
to speed up searching.
2008-03-19 06:38:21 +00:00
David Xu
2ea1f90a18
- Copy signal mask out before THR_UNLOCK(), because THR_UNLOCK() may call
...
_thr_suspend_check() which messes sigmask saved in thread structure.
- Don't suspend a thread has force_exit set.
- In pthread_exit(), if there is a suspension flag set, wake up waiting-
thread after setting PS_DEAD, this causes waiting-thread to break loop
in suspend_common().
2008-03-18 02:06:51 +00:00
David Xu
a9a11568ff
Actually delete SIGCANCEL mask for suspended thread, so the signal will not
...
be masked when it is resumed.
2008-03-16 03:22:38 +00:00
David Xu
150b71918c
If a thread is cancelled, it may have already consumed a umtx_wake,
...
check waiter and semphore counter to see if we may wake up next thread.
2008-03-11 03:26:47 +00:00
David Xu
8a18c0d3c8
Fix a bug when calculating remnant size.
2008-03-06 03:24:03 +00:00
David Xu
697b4b49be
Don't report death event to debugger if it is a forced exit.
2008-03-06 02:07:18 +00:00
David Xu
70e79fbb0d
Restore code setting new thread's scheduler parameters, I was thinking
...
that there might be starvations, but because we have already locked the
thread, the cpuset settings will always be done before the new thread
does real-world work.
2008-03-06 01:59:08 +00:00
David Xu
1cb51125aa
Increase and decrease in_sigcancel_handler accordingly to avoid possible
...
error caused by nested SIGCANCEL stack, it is a bit complex.
2008-03-05 07:04:55 +00:00
David Xu
54dff16b26
Use cpuset defined in pthread_attr for newly created thread, for now,
...
we set scheduling parameters and cpu binding fully in userland, and
because default scheduling policy is SCHED_RR (time-sharing), we set
default sched_inherit to PTHREAD_SCHED_INHERIT, this saves a system
call.
2008-03-05 07:01:20 +00:00
David Xu
07bbb16640
Add more cpu affinity function's symbols.
2008-03-05 06:56:35 +00:00
David Xu
21845eb98d
Check actual size of cpuset kernel is using and define underscore version
...
of API.
2008-03-05 06:55:48 +00:00
David Xu
76a9679f8e
If a new thread is created, it inherits current thread's signal masks,
...
however if current thread is executing cancellation handler, signal
SIGCANCEL may have already been blocked, this is unexpected, unblock the
signal in new thread if this happens.
MFC after: 1 week
2008-03-04 04:28:59 +00:00
David Xu
54c9b47c2b
Include cpuset.h, unbreak compiling.
2008-03-04 03:45:11 +00:00
David Xu
a759db946a
implement pthread_attr_getaffinity_np and pthread_attr_setaffinity_np.
2008-03-04 03:03:24 +00:00
David Xu
57030e1071
Implement functions pthread_getaffinity_np and pthread_setaffinity_np to
...
get and set thread's cpu affinity mask.
2008-03-03 09:16:29 +00:00
Dag-Erling Smørgrav
096ba44775
_pthread_mutex_isowned_np(): use a more reliable method; the current code
...
will work in simple cases, but may fail in more complicated ones.
Reviewed by: davidxu
2008-02-14 12:37:58 +00:00
David E. O'Brien
a2c4cd4549
style.Makefile(5)
2008-02-13 05:25:43 +00:00
David E. O'Brien
6cc9986927
style(9)
2008-02-13 05:12:05 +00:00
Dag-Erling Smørgrav
47252f4e65
Yet another pointy hat: when I zapped FBSDprivate_1.1, I forgot to move
...
its contents to FBSDprivate_1.0.
2008-02-06 20:45:46 +00:00
Dag-Erling Smørgrav
d29b081fee
Remove unnecessary prototype.
2008-02-06 20:43:19 +00:00
Dag-Erling Smørgrav
a9b9744ff8
Convert pthread.map to the format expected by version_gen.awk, and modify
...
the Makefile accordingly; libthr now explicitly uses libc's Versions.def.
MFC after: 2 weeks
2008-02-06 20:25:00 +00:00
Dag-Erling Smørgrav
facfc98226
Remove incorrectly added FBSDprivate_1.1 namespace, and move symbols which
...
are new in FreeBSD 8 to the appropriate namespace.
2008-02-06 20:20:29 +00:00
Dag-Erling Smørgrav
1cbdac2668
Per discussion on -threads, rename _islocked_np() to _isowned_np().
2008-02-06 19:34:31 +00:00
Dag-Erling Smørgrav
fcd61d9141
After careful consideration (and a brief discussion with attilio@), change
...
the semantics of pthread_mutex_islocked_np() to return true if and only if
the mutex is held by the current thread.
Obviously, change the regression test to match.
MFC after: 2 weeks
2008-02-04 12:35:23 +00:00
Dag-Erling Smørgrav
5fd410a787
Add pthread_mutex_islocked_np(), a cheap way to verify that a mutex is
...
locked. This is intended primarily to support the userland equivalent
of the various *_ASSERT_LOCKED() macros we have in the kernel.
MFC after: 2 weeks
2008-02-03 22:38:10 +00:00
David Xu
8d0a4dab61
SYSTEM_SCOPE_ONLY flag is no longer needed, it is the only mode libthr
...
supports.
2008-01-18 04:29:36 +00:00
David Xu
0c921dadbb
sem_post() requires to return -1 on error.
2008-01-07 02:26:29 +00:00
David Xu
9ba01c866b
call underscore version of pthread_cleanup_pop instead.
2007-12-20 04:40:12 +00:00
David Xu
06c8eb55ce
Remove vfork() overloading, it is no longer needed.
2007-12-20 04:32:28 +00:00
David Xu
c5f411515c
Add function prototypes.
2007-12-17 02:53:11 +00:00
David Xu
093fcf1694
1. Add function pthread_mutex_setspinloops_np to turn a mutex's spin
...
loop count.
2. Add function pthread_mutex_setyieldloops_np to turn a mutex's yield
loop count.
3. Make environment variables PTHREAD_SPINLOOPS and PTHREAD_YIELDLOOPS
to be only used for turnning PTHREAD_MUTEX_ADAPTIVE_NP mutex.
2007-12-14 06:25:57 +00:00
David Xu
6a663207e7
Enclose all code for macro ENQUEUE_MUTEX in do while statement, and
...
add missing brackets.
MFC: after 1 day
2007-12-11 08:00:58 +00:00
Jason Evans
b6b7fd3e2a
Fix pointer dereferencing problems in _pthread_mutex_init_calloc_cb() that
...
were obscured by pseudo-opaque pthreads API pointer casting.
2007-11-28 00:16:24 +00:00
Jason Evans
e1636e1f97
Add _pthread_mutex_init_calloc_cb() to libthr and libkse, so that malloc(3)
...
(part of libc) can use pthreads mutexes without causing infinite recursion
during initialization.
2007-11-27 03:16:44 +00:00
David Xu
da4410f25f
Simplify code, fix a thread cancellation bug in sem_wait and sem_timedwait.
2007-11-23 05:42:52 +00:00
David Xu
4877aaebc1
Reuse nwaiter member field to record number of waiters, in sem_post(),
...
this should reduce the chance having to do a syscall when there is no
waiter in the semaphore.
2007-11-21 06:01:02 +00:00
David Xu
73ba600faa
Remove warning level and aliasing restrictions.
2007-11-21 05:29:57 +00:00
David Xu
9e1ddd5fa0
Convert ceiling type to unsigned integer before comparing, fix compiler
...
warnings.
2007-11-21 05:25:27 +00:00
David Xu
922d56f9de
Add some function prototypes.
2007-11-21 05:23:54 +00:00
David Xu
6fdfcacb4a
Remove umtx_t definition, use type long directly, add wrapper function
...
_thr_umtx_wait_uint() for umtx operation UMTX_OP_WAIT_UINT, use the
function in semaphore operations, this fixed compiler warnings.
2007-11-21 05:21:58 +00:00
John Birrell
0aad0f2282
These are the things that the tinderbox has problems with because it
...
doesn't use the default CFLAGS which contain -fno-strict-aliasing.
Until the code is cleaned up, just add -fno-strict-aliasing to the
CFLAGS of these for the tinderboxes' sake, allowing the rest of the
tree to have -Werror enabled again.
2007-11-20 02:07:30 +00:00
Marius Strobl
9a2706abcc
In _pthread_key_create() ensure that libthr is initialized. This
...
fixes a NULL-dereference of curthread when libstdc+ initializes
the exception handling globals on archs we can't use GNU TLS due
to lack of support in binutils 2.15 (i.e. arm and sparc64), yet,
thus making threaded C++ programs compiled with GCC 4.2.1 work
again on these archs.
Reviewed by: davidxu
MFC after: 3 days
2007-11-06 21:50:43 +00:00
David Xu
56b45d9067
Avoid doing adaptive spinning for priority protected mutex, current
...
implementation always does lock in kernel.
2007-10-31 01:50:48 +00:00
David Xu
55f18e070f
Don't do adaptive spinning if it is running on UP kernel.
2007-10-31 01:44:50 +00:00