| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
except the function will return ETIMEDOUT if target thread does not exit
before specified absolute time passes.
|
|
|
|
| |
while here.
|
|
|
|
|
|
| |
- Remove the macros MUTEX_TYPE_FAST and MUTEX_TYPE_COUNTING_FAST.
OK'ed by: deischen
|
|
|
|
| |
Noticed by: davidxu
|
|
|
|
|
| |
While here, fix sleep() so that it is also a cancellation point (a
missing weak reference prevented that).
|
|
|
|
| |
the recent atomic_ptr() change.
|
|
|
|
|
|
|
| |
been bumped since RELENG_5.
Reviewed by: ru
Approved by: re (not needed for commit check but in principle...)
|
|
|
|
|
|
| |
Reviewed by: deischen
Approved by: re (dwhite)
MFC after : 4 days
|
|
|
|
| |
Approved by: re
|
|
|
|
|
|
|
|
| |
scheduling.
MFC after: 1 week
Submitted by: davidxu
Approved by: re (scottl)
|
|
|
|
|
|
|
|
|
| |
to point at libmap.conf(5). This will help answer questions about what
and why it is, although not in great detail.
Approved by: re (scottl)
MFC after: 1 week
MFC note: When MFC'd, don't MFC mention of work not yet MFC'd.
|
| |
|
| |
|
|
|
|
| |
clock cycles and has 8191 threads limitation.
|
|
|
|
| |
is no longer needed.
|
|
|
|
| |
functions, otherwise user ports have to be rebuilt.
|
| |
|
| |
|
| |
|
|
|
|
| |
events are reported.
|
| |
|
| |
|
| |
|
|
|
|
| |
use compiled version in libthr directory.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. fast simple type mutex.
2. __thread tls works.
3. asynchronous cancellation works ( using signal ).
4. thread synchronization is fully based on umtx, mainly, condition
variable and other synchronization objects were rewritten by using
umtx directly. those objects can be shared between processes via
shared memory, it has to change ABI which does not happen yet.
5. default stack size is increased to 1M on 32 bits platform, 2M for
64 bits platform.
As the result, some mysql super-smack benchmarks show performance is
improved massivly.
Okayed by: jeff, mtm, rwatson, scottl
|
|
|
|
|
|
|
|
|
| |
32-bit 64-bit
main thread 2 MB 4 MB
other threads 1 MB 2 MB
Approved by: mtm
Adapted from: libpthread
|
|
|
|
| |
Submitted by: kan
|
|
|
|
| |
including other headers.
|
|
|
|
|
|
|
| |
run as a 32 bit support library for an amd64 kernel. 32 bit consumers of
libthr have zero chance of running on an amd64 kernel since we don't
implement the i386_set_ldt() family of functions. Note that this commit
doesn't make it actually work, it just removes one more obstacle.
|
|
|
|
| |
any fake value.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
no userland locks are heald, the dead thread lock can no longer protect
access to it. Therefore, instead of using an if (!dead)...else clause
after walking the active threads list test the thread pointer before
deciding not to walk the dead threads list. If the thread pointer is null
it means it was not found in the active threads list and the dead threads
list should be checked.
2. Do not free the stack of a thread that is not marked dead. This is the
2nd and final part of eliminating the race to free a thread's stack.
MFC after: 3 days
|
|
|
|
| |
actual name is thr_exit(). How this ever worked is beyond me.
|
|
|
|
|
|
|
|
|
| |
After some discussion the best option seems to be to signal the thread's
death from within the kernel. This requires that thr_exit() take an
argument.
Discussed with: davidxu, deischen, marcel
MFC after: 3 days
|
|
|
|
| |
known problem with mysql on libthr: not being able to kill mysqld.
|
|
|
|
|
|
|
|
|
|
|
|
| |
specified mutex is invalid. In spec parlance 'MAY FAIL' means it's
up to the implementor. So, remove the check for NULL pointers for two
reasons:
1. A mutex may be invalid without necessarily being NULL.
2. If the pointer to the mutex is NULL core-dumping in the
vicinity of the problem is much much much better than failing
in some other part of the code (especially when the application
doesn't check the return value of the function that you oh so
helpfully set to EINVAL).
|
| |
|
|
|
|
|
| |
itself before it can execute any other code, so new thread should be
created with all signals are masked until after fsbase is set.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
o In the rwlock code: move a duplicated check inside an if..else to after
the if...else clause.
o When initializing a static rwlock move the initialization check
inside the lock.
o In thr_setschedparam.c: When breaking out of the trylock...retry if busy
loop make sure to reset the mtx pointer to null if the mutex is nolonger
in a queue.
|
| |
|
|
|
|
| |
debugging.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
pointer to the corresponding struct thread to the thread ID (lwpid_t)
assigned to that thread. The primary reason for this change is that
libthr now internally uses the same ID as the debugger and the kernel
when referencing to a kernel thread. This allows us to implement the
support for debugging without additional translations and/or mappings.
To preserve the ABI, the 1:1 threading syscalls, including the umtx
locking API have not been changed to work on a lwpid_t. Instead the
1:1 threading syscalls operate on long and the umtx locking API has
not been changed except for the contested bit. Previously this was
the least significant bit. Now it's the most significant bit. Since
the contested bit should not be tested by userland, this change is
not expected to be visible. Just to be sure, UMTX_CONTESTED has been
removed from <sys/umtx.h>.
Reviewed by: mtm@
ABI preservation tested on: i386, ia64
|
|
|
|
| |
instead of asking the kernel to do it when we create the thread.
|
|
|
|
|
|
| |
work in libpthread.
Submitted by: Dan Nelson <dnelson@allantgroup.com>
|
|
|
|
|
|
| |
a fork, make sure that the current thread isn't detached and freed. As
a consequence the thread should be inserted into the head of the
active list only once (in the beginning).
|