#
c80a875a |
|
09-Jun-2023 |
Trung Nguyen <trungnt282910@gmail.com> |
libroot: fix pthread_[g/s]etschedparam Make `pthread_getschedparam` and `pthread_setschedparam` handle scheduling policies more consistently with `sched_get_priority_min` and `sched_get_priority_max`. Threads running in real-time priority will appear to be under the `SCHED_RR` policy, while normal threads will appaer to be `SCHED_OTHER`. This prevents POSIX code using `sched_get_priority_min` with the calling thread's current policy returned by `pthread_getschedparam` to adjust its priority from unwantedly promote into real-time code and affect overall system performance. Change-Id: I9664257dc1b98db579e55218ce352cb762524b0c Reviewed-on: https://review.haiku-os.org/c/haiku/+/6556 Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk> Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
|
#
44cceee6 |
|
15-Oct-2022 |
Han Pengfei <pengphei@qq.com> |
pthread: add pthread_{getname_np,setname_npp} - These two functions imported for Linux/BSD compability. Signed-off-by: Han Pengfei <pengphei@qq.com> Change-Id: I3e9cada26f1ed043bfaed83e8185dcfff3bd71e2 Reviewed-on: https://review.haiku-os.org/c/haiku/+/5746 Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
|
#
901c3d44 |
|
05-Mar-2019 |
Jérôme Duval <jerome.duval@gmail.com> |
pthread: implement pthread_attr_[get|set]stack. remove pthread_attr_[get|set]stackaddr from unimplemented functions. Change-Id: I58807e86c75a189a576639ae1b2e4505a63700a5 Reviewed-on: https://review.haiku-os.org/c/1152 Reviewed-by: waddlesplash <waddlesplash@gmail.com>
|
#
8ae2e956 |
|
08-Jan-2019 |
Timothy Gu <timothygu99@gmail.com> |
libroot: add [gs]etpriority implementation Implemented against POSIX-1.2013. The implementation POSIX requirement thats setpriority() shall affect the priority of all system scope threads only extends to POSIX threads. This is implemented by modifying the default attributes for newly spawned pthreads. It is not possible to modify the default pthread attributes for different processes with the current implementation, as default pthread attributes are implemented in user-space. As a result, PRIO_PROCESS for which and 0 for who is the only supported combination for setpriority(). While it is possible to move the default attributes to the kernel, it is chosen not to so as to keep the pthread implementation user-space only. POSIX requires that lowering the nice value (increasing priority) can be done only by processes with appropriate privileges. However, as Haiku currently doesn't harbor any restrictions in setting the thread priority, this is not implemented. It is possible to have small precision errors when converting from Unix- style thread priority to Be-style. For example, the following program outputs "17" instead of the expected "18": #include <stdio.h> #include <sys/resource.h> int main() { setpriority(PRIO_PROCESS, 0, 18); printf("%d\n", getpriority(PRIO_PROCESS, 0)); return 0; } The underlying reason is because when you setpriority() both 18 and 19 are converted to the Be-style "2". This problem should not happen with priority levels lower than or equal to 20, when the Be notation is more precise than the Unix-style. Done as a part of GCI 2014. Fixes #2817. Signed-off-by: Timothy Gu <timothygu99@gmail.com> Co-authored-by: Leorize <leorize+oss@disroot.org> Change-Id: Ie14f105b00fe8563d16b3562748e1c2e56c873a6 Reviewed-on: https://review.haiku-os.org/c/78 Reviewed-by: Jérôme Duval <jerome.duval@gmail.com> Reviewed-by: waddlesplash <waddlesplash@gmail.com>
|
#
e4103b1b |
|
25-Dec-2018 |
Michael Lotz <mmlr@mlotz.ch> |
libroot: Introduce thread specific heap init/exit hooks. This allows heap implementations to initialize and clean up any thread specific structures. The current default hoard heap does not use these. Note that the thread exit hook will not be called for the main thread as the heap may be needed during process termination (__cxa_finalize for example). Change-Id: I703fbd34dec0d9029d619a2125c5b19d8c1933aa Reviewed-on: https://review.haiku-os.org/799 Reviewed-by: waddlesplash <waddlesplash@gmail.com>
|
#
4069b740 |
|
05-Jan-2018 |
François Revol <revol@free.fr> |
pthread: assign handle argument before resuming the created thread It's not specified by POSIX: http://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_create.html "There is no requirement on the implementation that the ID of the created thread be available before the newly created thread starts executing." However I've run into it with MPD which assumed this, probably because of Linux: https://github.com/MusicPlayerDaemon/MPD/issues/188 It doesn't hurt anyway.
|
#
90acbbfe |
|
14-Feb-2017 |
Jérôme Duval <jerome.duval@gmail.com> |
pthread: have pthread_setschedparam return 0 on success. * fixes #13299.
|
#
ba5172cc |
|
09-Mar-2014 |
Adrien Destugues <pulkomandy@pulkomandy.tk> |
pthread: allow NULL thread to compare equal. - POSIX says the behavior for pthread_equal is undefined for uninitialized arguments. - However, gcc C++11 threads supports expects C++-compatible behavior, that is, two uninitialized pthread_t should compare equal. Avoids some runtime asserts in latest WebKit version.
|
#
57d8dd92 |
|
01-Dec-2013 |
Michael Lotz <mmlr@mlotz.ch> |
pthread_join: Retry when interrupted as mandated by POSIX. The spec explicitly states that pthread_join shall not return EINTR, so we have to retry the wait when it gets interrupted instead of letting the error code through.
|
#
5d0a1da8 |
|
14-May-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
libroot: make all areas executable for old binaries * If at least one image is either B_HAIKU_ABI_GCC_2_ANCIENT or B_HAIKU_ABI_GCC_2_BEOS almost all areas are marked as executable. * B_EXECUTE_AREA and B_STACK_AREA are made public. The former is enforced since the introduction of DEP and apps need it to correctly set area protection. The latter is currently needed only to recognize stack areas and fix their protection in compatibility mode, but may also be useful if an app wants to use sigaltstack from POSIX API.
|
#
d1f280c8 |
|
01-Apr-2012 |
Hamish Morrison <hamishm53@gmail.com> |
Add support for pthread_attr_get/setguardsize() * Added the aforementioned functions. * create_area_etc() now takes a guard size parameter. * The thread_info::stack_base/end range now refers to the usable range only.
|
#
24df6592 |
|
11-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Merged signals-merge branch into trunk with the following changes: * Reorganized the kernel locking related to threads and teams. * We now discriminate correctly between process and thread signals. Signal handlers have been moved to teams. Fixes #5679. * Implemented real-time signal support, including signal queuing, SA_SIGINFO support, sigqueue(), sigwaitinfo(), sigtimedwait(), waitid(), and the addition of the real-time signal range. Closes #1935 and #2695. * Gave SIGBUS a separate signal number. Fixes #6704. * Implemented <time.h> clock and timer support, and fixed/completed alarm() and [set]itimer(). Closes #5682. * Implemented support for thread cancellation. Closes #5686. * Moved send_signal() from <signal.h> to <OS.h>. Fixes #7554. * Lots over smaller more or less related changes. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42116 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ba5172cccb57a5125ee1e63fb5f1b56c38e7474c |
|
09-Mar-2014 |
Adrien Destugues <pulkomandy@pulkomandy.tk> |
pthread: allow NULL thread to compare equal. - POSIX says the behavior for pthread_equal is undefined for uninitialized arguments. - However, gcc C++11 threads supports expects C++-compatible behavior, that is, two uninitialized pthread_t should compare equal. Avoids some runtime asserts in latest WebKit version.
|
#
57d8dd92ef5261d4fc17c6b4b0d756839407524b |
|
01-Dec-2013 |
Michael Lotz <mmlr@mlotz.ch> |
pthread_join: Retry when interrupted as mandated by POSIX. The spec explicitly states that pthread_join shall not return EINTR, so we have to retry the wait when it gets interrupted instead of letting the error code through.
|
#
5d0a1da8bf914d4a26bba97ba40cbb36bf99ce52 |
|
14-May-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
libroot: make all areas executable for old binaries * If at least one image is either B_HAIKU_ABI_GCC_2_ANCIENT or B_HAIKU_ABI_GCC_2_BEOS almost all areas are marked as executable. * B_EXECUTE_AREA and B_STACK_AREA are made public. The former is enforced since the introduction of DEP and apps need it to correctly set area protection. The latter is currently needed only to recognize stack areas and fix their protection in compatibility mode, but may also be useful if an app wants to use sigaltstack from POSIX API.
|
#
d1f280c80529d5f0bc55030c2934f9255bc7f6a2 |
|
01-Apr-2012 |
Hamish Morrison <hamishm53@gmail.com> |
Add support for pthread_attr_get/setguardsize() * Added the aforementioned functions. * create_area_etc() now takes a guard size parameter. * The thread_info::stack_base/end range now refers to the usable range only.
|
#
24df65921befcd0ad0c5c7866118f922da61cb96 |
|
11-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Merged signals-merge branch into trunk with the following changes: * Reorganized the kernel locking related to threads and teams. * We now discriminate correctly between process and thread signals. Signal handlers have been moved to teams. Fixes #5679. * Implemented real-time signal support, including signal queuing, SA_SIGINFO support, sigqueue(), sigwaitinfo(), sigtimedwait(), waitid(), and the addition of the real-time signal range. Closes #1935 and #2695. * Gave SIGBUS a separate signal number. Fixes #6704. * Implemented <time.h> clock and timer support, and fixed/completed alarm() and [set]itimer(). Closes #5682. * Implemented support for thread cancellation. Closes #5686. * Moved send_signal() from <signal.h> to <OS.h>. Fixes #7554. * Lots over smaller more or less related changes. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42116 a95241bf-73f2-0310-859d-f6bbb57e9c96
|