|
Revision tags: release/12.4.0, release/13.1.0, release/12.3.0, release/13.0.0, release/12.2.0, release/11.4.0 |
|
| #
2ef84b7d |
| 10-Jun-2020 |
Konstantin Belousov <[email protected]> |
Add pthread_getname_np() and pthread_setname_np() aliases for pthread_get_name_np() and pthread_set_name_np().
This re-applies r361770 after compatibility fixes.
Reviewed by: antoine, jkim, markj T
Add pthread_getname_np() and pthread_setname_np() aliases for pthread_get_name_np() and pthread_set_name_np().
This re-applies r361770 after compatibility fixes.
Reviewed by: antoine, jkim, markj Tested by: antoine (exp-run) Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D25117
show more ...
|
|
Revision tags: release/12.1.0, release/11.3.0, release/12.0.0 |
|
| #
b6413b6d |
| 18-Aug-2018 |
Pedro F. Giffuni <[email protected]> |
POSIX compliance improvements in the pthread(3) functions.
This basically adds makes use of the C99 restrict keyword, and also adds some 'const's to four threading functions: pthread_mutexattr_getty
POSIX compliance improvements in the pthread(3) functions.
This basically adds makes use of the C99 restrict keyword, and also adds some 'const's to four threading functions: pthread_mutexattr_gettype(), pthread_mutexattr_getprioceiling(), pthread_mutexattr_getprotocol(), and pthread_mutex_getprioceiling. The changes are in accordance to POSIX/SUSv4-2018.
Hinted by: DragonFlyBSD
Relnotes: yes MFC after: 1 month Differential Revision: D16722
show more ...
|
|
Revision tags: release/11.2.0 |
|
| #
65436b2e |
| 04-Apr-2018 |
Pedro F. Giffuni <[email protected]> |
pthread.h: minor indentation cleanups.
No functional change.
X-MFC with: r331969
|
| #
7a07ca9b |
| 04-Apr-2018 |
Pedro F. Giffuni <[email protected]> |
pthread.h: drop nullability attributes.
These have been found to be practically useless. We were actually following the Android bionic library and had some interest in replicating the same warnings
pthread.h: drop nullability attributes.
These have been found to be practically useless. We were actually following the Android bionic library and had some interest in replicating the same warnings and behaviour but Android has since removed them.
We are still keeping some uses of nullability attributes in other headers, somewhat in line with Apple's libc.
MFC after: 1 week Hinted by: bionic (git 3f66e74b903905e763e104396aff52a81718cfde)
show more ...
|
| #
e58eb3c4 |
| 25-Nov-2017 |
Pedro F. Giffuni <[email protected]> |
include: General further adoption of SPDX licensing ID tags.
Mainly focus on files that use BSD 2-Clause license, however the tool I was using mis-identified many licenses so this was mostly a manua
include: General further adoption of SPDX licensing ID tags.
Mainly focus on files that use BSD 2-Clause license, however the tool I was using mis-identified many licenses so this was mostly a manual - error prone - task.
The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts.
show more ...
|
|
Revision tags: release/10.4.0, release/11.1.0 |
|
| #
4eecef90 |
| 16-Feb-2017 |
Pedro F. Giffuni <[email protected]> |
Small inclusion guard comment fix.
|
| #
649702c5 |
| 28-Jan-2017 |
Pedro F. Giffuni <[email protected]> |
Make use of clang nullability attributes.
Replace uses of the GCC __nonnull__ attribute with the clang nullability qualifiers. The replacement should be transparent for clang developers as the new q
Make use of clang nullability attributes.
Replace uses of the GCC __nonnull__ attribute with the clang nullability qualifiers. The replacement should be transparent for clang developers as the new qualifiers will produce the same warnings and will be useful for static checkers but will not cause aggressive optimizations.
GCC will not produce such warnings and developers will have to use upgraded GCC ports built with the system headers from r312538.
Hinted by: Apple's Libc-1158.20.4, Bionic libc MFC after: 11.1 Release
Differential Revision: https://reviews.freebsd.org/D9004
show more ...
|
| #
f1b298ad |
| 01-Jan-2017 |
Pedro F. Giffuni <[email protected]> |
Remove some uses of the GCC __nonnull() attribute.
While the checks are considered useful, the attribute does dangerous optimizations, removing NULL checks where they can be needed. Remove the uses
Remove some uses of the GCC __nonnull() attribute.
While the checks are considered useful, the attribute does dangerous optimizations, removing NULL checks where they can be needed. Remove the uses of this attribute introduced in r281130: the changes were inspired on Google's bionic where this attribute is not used anymore.
The __nonnull() attribute will be deprecrated from our headers and replaced with the Clang _Nonnull qualifier in the future.
MFC after: 3 days
show more ...
|
|
Revision tags: release/11.0.1, release/11.0.0 |
|
| #
2a339d9e |
| 17-May-2016 |
Konstantin Belousov <[email protected]> |
Add implementation of robust mutexes, hopefully close enough to the intention of the POSIX IEEE Std 1003.1TM-2008/Cor 1-2013.
A robust mutex is guaranteed to be cleared by the system upon either thr
Add implementation of robust mutexes, hopefully close enough to the intention of the POSIX IEEE Std 1003.1TM-2008/Cor 1-2013.
A robust mutex is guaranteed to be cleared by the system upon either thread or process owner termination while the mutex is held. The next mutex locker is then notified about inconsistent mutex state and can execute (or abandon) corrective actions.
The patch mostly consists of small changes here and there, adding neccessary checks for the inconsistent and abandoned conditions into existing paths. Additionally, the thread exit handler was extended to iterate over the userspace-maintained list of owned robust mutexes, unlocking and marking as terminated each of them.
The list of owned robust mutexes cannot be maintained atomically synchronous with the mutex lock state (it is possible in kernel, but is too expensive). Instead, for the duration of lock or unlock operation, the current mutex is remembered in a special slot that is also checked by the kernel at thread termination.
Kernel must be aware about the per-thread location of the heads of robust mutex lists and the current active mutex slot. When a thread touches a robust mutex for the first time, a new umtx op syscall is issued which informs about location of lists heads.
The umtx sleep queues for PP and PI mutexes are split between non-robust and robust.
Somewhat unrelated changes in the patch: 1. Style. 2. The fix for proper tdfind() call use in umtxq_sleep_pi() for shared pi mutexes. 3. Removal of the userspace struct pthread_mutex m_owner field. 4. The sysctl kern.ipc.umtx_vnode_persistent is added, which controls the lifetime of the shared mutex associated with a vnode' page.
Reviewed by: jilles (previous version, supposedly the objection was fixed) Discussed with: brooks, Martin Simmons <[email protected]> (some aspects) Tested by: pho Sponsored by: The FreeBSD Foundation
show more ...
|
|
Revision tags: release/10.3.0 |
|
| #
1bdbd705 |
| 28-Feb-2016 |
Konstantin Belousov <[email protected]> |
Implement process-shared locks support for libthr.so.3, without breaking the ABI. Special value is stored in the lock pointer to indicate shared lock, and offline page in the shared memory is alloca
Implement process-shared locks support for libthr.so.3, without breaking the ABI. Special value is stored in the lock pointer to indicate shared lock, and offline page in the shared memory is allocated to store the actual lock.
Reviewed by: vangyzen (previous version) Discussed with: deischen, emaste, jhb, rwatson, Martin Simmons <[email protected]> Tested by: pho Sponsored by: The FreeBSD Foundation
show more ...
|
|
Revision tags: release/10.2.0 |
|
| #
153cbcd6 |
| 06-Apr-2015 |
Pedro F. Giffuni <[email protected]> |
Make use of gcc attributes in some standard include headers.
The `nonnull' attribute specifies that some function parameters should be non-null pointers. This is very useful as it helps the compile
Make use of gcc attributes in some standard include headers.
The `nonnull' attribute specifies that some function parameters should be non-null pointers. This is very useful as it helps the compiler generate warnings on suspicious code and can also enable some small optimizations.
Also start using 'alloc_size' attribute in the allocator functions.
This is an initial step to better integrate our libc with the compiler: these attributes are fully supported by clang and they are also useful for the static analyzer.
Note that due to some bogus internal procedure in the way gcc ports are built they may require updating if they were built before r280801.
Relnotes: yes Hinted by: Android's bionic libc Differential Revision: https://reviews.freebsd.org/D2107
show more ...
|
| #
4b069c82 |
| 29-Mar-2015 |
Pedro F. Giffuni <[email protected]> |
Clean some spaces vs tabs.
No, this file doesn't conform with KNF at all.
|
| #
28cdb3ee |
| 25-Mar-2015 |
Pedro F. Giffuni <[email protected]> |
Temporarily revert 280458.
GCC is still carries an old version of cdefs.h which doesn't accept multiple parameters for the nonnull attribute.
Since this issue probably affects many ports in the tre
Temporarily revert 280458.
GCC is still carries an old version of cdefs.h which doesn't accept multiple parameters for the nonnull attribute.
Since this issue probably affects many ports in the tree we will revert it for now until gcc gets fixed.
show more ...
|
| #
512cd135 |
| 24-Mar-2015 |
Pedro F. Giffuni <[email protected]> |
Introduce nonnull attributes in the signal and pthread headers.
The `nonnull' attribute specifies that some function parameters should be non-null pointers. This is very useful as it helps the comp
Introduce nonnull attributes in the signal and pthread headers.
The `nonnull' attribute specifies that some function parameters should be non-null pointers. This is very useful as it helps the compiler generate warnings on suspicious code and can also enable some small optimizations. In clang this is also useful for the static analyzer.
While we could go on defining this all over the tree, it only makes sense to annotate a subset of critical functions.
Hinted by: Android's bionic libc Differential Revision: https://reviews.freebsd.org/D2101
show more ...
|
|
Revision tags: release/10.1.0 |
|
| #
49891e45 |
| 01-Sep-2014 |
Ed Schouten <[email protected]> |
Add lock annotations to the header files of our threading libraries.
This change extends all of the functions present in the <pthread.h> and <threads.h> headers to have lock annotations. This will a
Add lock annotations to the header files of our threading libraries.
This change extends all of the functions present in the <pthread.h> and <threads.h> headers to have lock annotations. This will allow Clang to warn about the following:
- Locking a function twice, - Unlocking a function without a mutex being locked, - Forgetting to unlock a mutex before returning, - Destroying or reinitializing a mutex that is currenty locked, - Using an unlocked mutex in combination with a condition variable.
Enabling these annotations already allowed me to catch a bug in one of our userspace tools (r270749).
show more ...
|
|
Revision tags: release/9.3.0, release/10.0.0 |
|
| #
23bbf7fa |
| 22-Oct-2013 |
Tijl Coosemans <[email protected]> |
Add a dummy statement to the beginning of the pthread_cleanup_pop() macro to allow a call of the macro to be labelled as in:
label: pthread_cleanup_pop();
Reviewed by: imp MFC after: 3 days
|
|
Revision tags: release/9.2.0, release/8.4.0, release/9.1.0, release/8.3.0_cvs, release/8.3.0, release/9.0.0, release/7.4.0_cvs, release/8.2.0_cvs, release/7.4.0, release/8.2.0 |
|
| #
f66ffe64 |
| 06-Jan-2011 |
David Xu <[email protected]> |
Remove leftover for r214093.
|
| #
a6b9b59e |
| 18-Oct-2010 |
David Xu <[email protected]> |
Add pthread_rwlockattr_setkind_np and pthread_rwlockattr_getkind_np, the functions set or get pthread_rwlock type, current supported types are: PTHREAD_RWLOCK_PREFER_READER_NP, PTHREAD_RWLOCK_P
Add pthread_rwlockattr_setkind_np and pthread_rwlockattr_getkind_np, the functions set or get pthread_rwlock type, current supported types are: PTHREAD_RWLOCK_PREFER_READER_NP, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, PTHREAD_RWLOCK_PREFER_WRITER_NP, default is PTHREAD_RWLOCK_PREFER_WRITER_NONCECURSIVE_NP, this maintains binary compatible with old code.
show more ...
|
| #
bbb64c21 |
| 28-Sep-2010 |
David Xu <[email protected]> |
In current code, statically initialized and destroyed object have same null value, the code can not distinguish between them, to fix the problem, now a destroyed object is assigned to a non-null valu
In current code, statically initialized and destroyed object have same null value, the code can not distinguish between them, to fix the problem, now a destroyed object is assigned to a non-null value, and it will be rejected by some pthread functions. PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP is changed to number 1, so that adaptive mutex can be statically initialized correctly.
show more ...
|
|
Revision tags: release/8.1.0_cvs, release/8.1.0, release/7.3.0_cvs, release/7.3.0, release/8.0.0_cvs, release/8.0.0, release/7.2.0_cvs, release/7.2.0 |
|
| #
48a3f7d9 |
| 14-Mar-2009 |
David Schultz <[email protected]> |
Fix the visibility of several prototypes. Also move pthread_kill() and pthread_sigmask() to signal.h. In principle, this shouldn't break anything, since they're already in signal.h on other systems,
Fix the visibility of several prototypes. Also move pthread_kill() and pthread_sigmask() to signal.h. In principle, this shouldn't break anything, since they're already in signal.h on other systems, and the FreeBSD manpage says that both pthread.h and signal.h need to be included to get these functions.
Add a hack to declare pthread_t in the P1003.1-2008 namespace in signal.h.
show more ...
|
|
Revision tags: release/7.1.0_cvs, release/7.1.0, release/6.4.0_cvs, release/6.4.0 |
|
| #
83a07587 |
| 09-Jun-2008 |
David Xu <[email protected]> |
Make pthread_cleanup_push() and pthread_cleanup_pop() as a pair of macros, use stack space to keep cleanup information, this eliminates overhead of calling malloc() and free() in thread library.
Dis
Make pthread_cleanup_push() and pthread_cleanup_pop() as a pair of macros, use stack space to keep cleanup information, this eliminates overhead of calling malloc() and free() in thread library.
Discussed on: thread@
show more ...
|
| #
9939a136 |
| 22-Mar-2008 |
David Xu <[email protected]> |
Add POSIX pthread API pthread_getcpuclockid() to get a thread's cpu time clock id.
|
|
Revision tags: release/7.0.0_cvs, release/7.0.0, release/6.3.0_cvs, release/6.3.0 |
|
| #
2017a7cd |
| 29-Oct-2007 |
Kris Kennaway <[email protected]> |
Add a new "non-portable" mutex type, PTHREAD_MUTEX_ADAPTIVE_NP. This is also implemented in glibc and is used by a number of existing applications (mysql, firefox, etc).
This mutex type is a defaul
Add a new "non-portable" mutex type, PTHREAD_MUTEX_ADAPTIVE_NP. This is also implemented in glibc and is used by a number of existing applications (mysql, firefox, etc).
This mutex type is a default mutex with the additional property that it spins briefly when attempting to acquire a contested lock, doing trylock operations in userland before entering the kernel to block if eventually unsuccessful.
The expectation is that applications requesting this mutex type know that the mutex is likely to be only held for very brief periods, so it is faster to spin in userland and probably succeed in acquiring the mutex, than to enter the kernel and sleep, only to be woken up almost immediately. This can help significantly in certain cases when pthread mutexes are heavily contended and held for brief durations (such as mysql).
Spin up to 200 times before entering the kernel, which represents only a few us on modern CPUs. No performance degradation was observed with this value and it is sufficient to avoid a large performance drop in mysql performance in the heavily contended pthread mutex case.
The libkse implementation is a NOP.
Reviewed by: jeff MFC after: 3 days
show more ...
|
|
Revision tags: release/6.2.0_cvs, release/6.2.0, release/5.5.0_cvs, release/5.5.0, release/6.1.0_cvs, release/6.1.0, release/6.0.0_cvs, release/6.0.0 |
|
| #
02ea6387 |
| 24-Oct-2005 |
David Xu <[email protected]> |
Add prototype for following functions, plus tab fixes. pthread_condattr_getpshared pthread_condattr_setpshared pthread_mutexattr_getpshared pthread_mutexattr_setpshared
|
| #
323abbb7 |
| 01-Sep-2005 |
Stefan Farfeleder <[email protected]> |
Improve POSIX conformance: - Don't pollute the namespace by including <sys/types.h>, <sys/time.h>, <sys/signal.h> and <limits.h>. Use __MINSIGSTKSZ and __ULONG_MAX from <machine/_limits.h>, __si
Improve POSIX conformance: - Don't pollute the namespace by including <sys/types.h>, <sys/time.h>, <sys/signal.h> and <limits.h>. Use __MINSIGSTKSZ and __ULONG_MAX from <machine/_limits.h>, __sigset_t from <sys/_sigset.h> instead. - Include <time.h> because POSIX says we have to.
PTHREAD_{DESTRUCTOR_ITERATIONS,KEYS_MAX,STACK_MIN,THREADS_MAX} should eventually move to <limits.h> but are left here for now.
Discussed on: standards@, threads@
show more ...
|