| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
libthr: Avoid checking for negative values in usigned count.
Check for overflow instead.
|
|
|
|
|
|
| |
Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones
This implifies pathing in make/displayed output
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
r311925:
Import testcase updates with code contributed back to NetBSD
This also (inadvertently) contains an update to
contrib/netbsd-tests/lib/libc/sys/t_wait.c (new testcases).
In collaboration with: christos@NetBSD.org
r311968:
Fix lib/libc/sys/access_test after r311925
sys/param.h needs to be #included in order for __FreeBSD_version to be checked
r311969:
Remove __HAVE_LONG_DOUBLE #define from t_strtod.c and place it in Makefile
This is to enable support in other testcases
Inspired by lib/msun/tests/Makefile .
r312008:
Upgrade NetBSD tests to 01.11.2017_23.20 snapshot
This contains some new testcases in /usr/tests/...:
- .../lib/libc
- .../lib/libthr
- .../lib/msun
- .../sys/kern
Tested on: amd64, i386
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
r289172:
Refactor the test/ Makefiles after recent changes to bsd.test.mk (r289158) and
netbsd-tests.test.mk (r289151)
- Eliminate explicit OBJTOP/SRCTOP setting
- Convert all ad hoc NetBSD test integration over to netbsd-tests.test.mk
- Remove unnecessary TESTSDIR setting
- Use SRCTOP where possible for clarity
r290254:
Remove unused variable (SRCDIR)
|
|
|
|
| |
Add __cxa_thread_atexit(3) API implementation.
|
|
|
|
| |
Remove empty initializer for the once facility.
|
|
|
|
| |
"PTHREAD_PROCESSES_PRIVATE".
|
|
|
|
|
|
|
| |
Do not leak THR_FLAGS_SUSPENDED from the previous suspend/resume
cycle.
PR: 209233
|
|
|
|
| |
Remove unused variable.
|
|
|
|
|
| |
From libthr, remove special and strange code to set up session and
control terminal, activated when running with pid 1.
|
|
|
|
| |
Fix typo.
|
|
|
|
| |
Make libc __pthread_map_stacks_exec() interposed.
|
|
|
|
|
|
|
|
|
| |
libthr: const-ify two variables
Make the default umutex and urwlock initializers const,
because they can be, and as a microoptimization.
Sponsored by: Dell Inc.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Clang emits SSE instructions on amd64 in the common path of
pthread_mutex_unlock. If the thread does not otherwise use SSE,
this usage incurs a context-switch of the FPU/SSE state, which
reduces the performance of multiple real-world applications by a
non-trivial amount (3-5% in one application).
Instead of this change, I experimented with eagerly switching the
FPU state at context-switch time. This did not help. Most of the
cost seems to be in the read/write of memory--as kib@ stated--and
not in the #NM handling. I tested on machines with and without
XSAVEOPT.
One counter-argument to this change is that most applications already
use SIMD, and the number of applications and amount of SIMD usage
are only increasing. This is absolutely true. I agree that--in
general and in principle--this change is in the wrong direction.
However, there are applications that do not use enough SSE to offset
the extra context-switch cost. SSE does not provide a clear benefit
in the current libthr code with the current compiler, but it does
provide a clear loss in some cases. Therefore, disabling SSE in
libthr is a non-loss for most, and a gain for some.
I refrained from disabling SSE in libc--as was suggested--because
I can't make the above argument for libc. It provides a wide variety
of code; each case should be analyzed separately.
https://lists.freebsd.org/pipermail/freebsd-current/2015-March/055193.html
Suggestions from: dim, jmg, rpaulo
Sponsored by: Dell Inc.
|
|
|
|
| |
Pre-resolve symbols required for the deferred signal processing.
|
|
|
|
| |
Fix typo in comment.
|
|
|
|
|
|
| |
Use bare mmap(2) to allocate space for the per-thread keys,
instead of malloc(). This allows third party mallocs, which use
pthread_setspecific(3) on the allocation path, to work.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
r282057:
Build/install libc, librt, libthr, and msun NetBSD test suites on all
architectures
r282092 (by andrew):
Correct the spelling of MACHINE_CPUARCH, MACHINE_CPU is not set on arm64.
r282106:
Remove per-architecture checks for enabling HAVE_FENV_H
The conditional came from NetBSD, where only select architectures have this
header/support
All architectures on FreeBSD have the necessary support though, so the
conditional's completely unnecessary
make tinderbox done on all architectures (including arm64, where the issue
occurred before) this time
|
|
|
|
|
|
|
|
| |
_pthread_cleanup_push: fix allocator sizeof operand mismatch
Same fix appears to be in DragonFly's libthread_xu.
Found by: Clang Static Analyzer
|
|
|
|
| |
Make wait6(2), waitid(3) and ppoll(2) cancellation points.
|
|
|
|
| |
Make kevent(2) a cancellation point.
|
|
|
|
| |
Propagate errors from _thr_umutex_unlock2 through mutex_unlock_common.
|
|
|
|
| |
Update libthr(3) man page to reflect the work done to support dlopen.
|
|
|
|
| |
Properly interpose libc spinlocks, was missed in r276630.
|
|
|
|
| |
Fully initialize allocated memory for the new barrier.
|
|
|
|
| |
Do not allow pthread_sigmask() to block SIGCANCEL.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(or loading a dso linked to libthr.so into process which was not
linked against threading library).
MFC r276630:
Remove interposing, fix malloc, reinstall signal handlers wrappers on
libthr load.
MFC r276681:
Avoid calling internal libc function through PLT or accessing data
though GOT.
MFC r277032:
Reduce the size of the interposing table and amount of
cancellation-handling code in the libthr.
MFC note:
r276646 ("do not erronously export 'openat' symbol from rtld") is not
applicable to stable/10 yet, since PATHFDS support was not merged.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
r274578:
Add reachover Makefiles for contrib/netbsd-tests/lib/libpthread as
lib/libthr/tests
A variant of this code has been tested on amd64/i386 for some time by
EMC/Isilon on 10-STABLE/11-CURRENT. It builds on other architectures, but the
code will remain off until it's proven it works on virtual hardware or real
hardware on other architectures
Original work by: pho
Sponsored by: EMC / Isilon Storage Division
r274580:
Add reachover Makefiles for contrib/netbsd-tests/lib/librt
A variant of this code has been tested on amd64/i386 for some time by
EMC/Isilon on 10-STABLE/11-CURRENT. It builds on other architectures, but the
code will remain off until it's proven it works on virtual hardware or real
hardware on other architectures
Sponsored by: EMC / Isilon Storage Division
|
|
|
|
|
|
|
|
|
| |
Expand the libthr(3) manpage to document knobs accepted by libthr.so
and explain some internal working of the library, neccessary to
understand the knobs effects.
MFC r272153 (by pluknet):
Fix description of mutex acquisition.
|
|
|
|
|
|
| |
Switch the defaults to not split the RLIMIT_STACK-sized initial thread
stack into the stacks of the created threads. Add knob
LIBPTHREAD_SPLITSTACK_MAIN to restore the older behaviour.
|
|
|
|
|
|
| |
Add a knob LIBPTHREAD_BIGSTACK_MAIN, which instructs libthr to leave
the whole RLIMIT_STACK-sized region of the kernel-allocated stack as
the stack of main thread.
|
|
|
|
| |
Style.
|
|
|
|
| |
Change the _rtld_atfork() to lock the bind lock in write mode.
|
|
|
|
|
|
|
| |
In _pthread_kill(), if passed pthread is current thread, do not send
the signal second time, by adding the missed else before if statement.
PR: threads/186309
|
|
|
|
|
|
|
| |
Fix for the spurious signal handler call with zero signo in the threaded
process.
Approved by: re (hrs)
|
|
|
|
|
|
|
|
|
| |
cancellation point. When enabling the cancellation, only process the
pending cancellation for asynchronous mode.
Reported and reviewed by: Kohji Okuno <okuno.kohji@jp.panasonic.com>
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
|
|
|
|
|
|
|
|
|
| |
identified, unify the code of check_deferred_signal() for all
architectures, making the variant under #ifdef x86 common.
Tested by: marius (sparc64)
Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
check_deferred_signal() returns twice, since handle_signal() emulates
the return from the normal signal handler by sigreturn(2)ing the
passed context. Second return is performed on the destroyed stack
frame, because __fillcontextx() has already returned. This causes
undefined and bad behaviour, usually the victim thread gets SIGSEGV.
Avoid nested frame and the need to return from it by doing direct call
to getcontext() in the check_deferred_signal() and using a new private
libc helper __fillcontextx2() to complement the context with the
extended CPU state if the deferred signal is still present.
The __fillcontextx() is now unused, but is kept to allow older
libthr.so to be used with the new libc.
Mark __fillcontextx() as returning twice [1].
Reported by: pgj
Pointy hat to: kib
Discussed with: dim
Tested by: pgj, dim
Suggested by: jilles [1]
MFC after: 1 week
|
|
|
|
|
|
|
| |
and fix typo.
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
|
|
|
|
|
|
| |
in the first place.
Initial patch submitted by: phk
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The accept4() function, compared to accept(), allows setting the new file
descriptor atomically close-on-exec and explicitly controlling the
non-blocking status on the new socket. (Note that the latter point means
that accept() is not equivalent to any form of accept4().)
The linuxulator's accept4 implementation leaves a race window where the new
file descriptor is not close-on-exec because it calls sys_accept(). This
implementation leaves no such race window (by using falloc() flags). The
linuxulator could be fixed and simplified by using the new code.
Like accept(), accept4() is async-signal-safe, a cancellation point and
permitted in capability mode.
|
|
|
|
| |
already done this.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
by using buggy getcontext/setcontext on same stack, while swapcontext
normally works on different stack, there is no such a problem.
|
| |
|
|
|
|
|
|
| |
the context becomes invalid when the function returns, same as setjmp,
it must be implemented in assemble language, see discussions in PR
misc/177624.
|
|
|
|
|
|
|
|
|
|
|
| |
The threaded rtld lock implementation is faster even in the single-threaded
case because it postpones signal handlers via THR_CRITICAL_ENTER and
THR_CRITICAL_LEAVE instead of calling sigprocmask(2).
As a result, exception handling becomes faster in single-threaded
applications linked with libthr.
Reviewed by: kib
|