#
bf685cdf |
|
01-Nov-2014 |
Michael Lotz <mmlr@mlotz.ch> |
kernel: Fix missing reference release in CreateThreadEvent. CreateThreadEvent::DoDPC() missed a reference release to balance the acquired reference before queuing the DPC, resulting in the CreateThreadEvent objects being leaked. This also removes the destructor that tried to cancel the DPC. Since the class is reference counted and only destroyed when the DPC has run and released the last reference, this didn't make much sense.
|
#
6a80e688 |
|
31-Oct-2014 |
Michael Lotz <mmlr@mlotz.ch> |
kernel: Fix missing reference to team/thread in signal events. The signal to the team/thread is only actually sent in a deferred procedure. To ensure that the team/thread stays valid between the DPC being queued and it actually running, we need to acquire a reference. Fixes #11390, where the DPC was run after the team was already destroyed.
|
#
d7e1e3e0 |
|
16-Mar-2014 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel/UserEvent: Make sure UserEvent object is valid during DPC Most of the actual UserEvent work is done in DPC so that we don't have to care about the limitations of the context in which UserEvent::Fire() is invoked. This requires appropriate management of lifetime of UserEvent instances to make sure that DoDPC() method is always called on a valid object.
|
#
03451e4c |
|
23-Jan-2014 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Fix deadlock with thread sending signal to itself UserEvent can be fired from scheduler_reschedule() i.e. while holding current thread scheduler_lock. If the current thread goes sleep and during reschedule one of its timers sends a signel to it, then scheduler_enqueue_in_run_queue() attempts to acquire again its scheduler_lock resulting in a deadlock. There was also a minor issue with both scheduler_reschedule() and scheduler_enqueue_in_run_queue() acquiring current CPU scheduler mode lock.
|
#
3519eb33 |
|
06-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Change Thread::team_lock to rw_spinlock
|
#
aa4aca02 |
|
06-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Protect signal data with Team::signal_lock
|
#
077c84eb |
|
05-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: atomic_*() functions rework * No need for the atomically changed variables to be declared as volatile. * Drop support for atomically getting and setting unaligned data. * Introduce atomic_get_and_set[64]() which works the same as atomic_set[64]() used to. atomic_set[64]() does not return the previous value anymore.
|
#
e7dba861 |
|
05-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: User{Event, Timer}: Use atomic access where necessary
|
#
f4b088a9 |
|
04-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Protect UserTimers with sUserTimerLock
|
#
958f6d00 |
|
04-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Make UserEvent::Fire() work without gSchedulerLock held
|
#
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
|
#
bf685cdf2e311bc47c131369fdaf3ca4b64416fe |
|
01-Nov-2014 |
Michael Lotz <mmlr@mlotz.ch> |
kernel: Fix missing reference release in CreateThreadEvent. CreateThreadEvent::DoDPC() missed a reference release to balance the acquired reference before queuing the DPC, resulting in the CreateThreadEvent objects being leaked. This also removes the destructor that tried to cancel the DPC. Since the class is reference counted and only destroyed when the DPC has run and released the last reference, this didn't make much sense.
|
#
6a80e6889ad1f00ec1c8ec1193ff5e346fcd73b7 |
|
31-Oct-2014 |
Michael Lotz <mmlr@mlotz.ch> |
kernel: Fix missing reference to team/thread in signal events. The signal to the team/thread is only actually sent in a deferred procedure. To ensure that the team/thread stays valid between the DPC being queued and it actually running, we need to acquire a reference. Fixes #11390, where the DPC was run after the team was already destroyed.
|
#
d7e1e3e0120b00c88cae7a6828dd727062873dfe |
|
16-Mar-2014 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel/UserEvent: Make sure UserEvent object is valid during DPC Most of the actual UserEvent work is done in DPC so that we don't have to care about the limitations of the context in which UserEvent::Fire() is invoked. This requires appropriate management of lifetime of UserEvent instances to make sure that DoDPC() method is always called on a valid object.
|
#
03451e4cc166588ed1b399bb97acaf3a043283ff |
|
23-Jan-2014 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Fix deadlock with thread sending signal to itself UserEvent can be fired from scheduler_reschedule() i.e. while holding current thread scheduler_lock. If the current thread goes sleep and during reschedule one of its timers sends a signel to it, then scheduler_enqueue_in_run_queue() attempts to acquire again its scheduler_lock resulting in a deadlock. There was also a minor issue with both scheduler_reschedule() and scheduler_enqueue_in_run_queue() acquiring current CPU scheduler mode lock.
|
#
3519eb334ac161e88fa56bcef287a2275a1c963e |
|
06-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Change Thread::team_lock to rw_spinlock
|
#
aa4aca0264aa285e07c0b8e43112ac06803fcd2e |
|
06-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Protect signal data with Team::signal_lock
|
#
077c84eb27b25430428d356f3d13afabc0cc0d13 |
|
05-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: atomic_*() functions rework * No need for the atomically changed variables to be declared as volatile. * Drop support for atomically getting and setting unaligned data. * Introduce atomic_get_and_set[64]() which works the same as atomic_set[64]() used to. atomic_set[64]() does not return the previous value anymore.
|
#
e7dba861fd89792538442cc1b01584f7dabbd4a9 |
|
05-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: User{Event, Timer}: Use atomic access where necessary
|
#
f4b088a992fefefc87aae57643aca05d81826cca |
|
04-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Protect UserTimers with sUserTimerLock
|
#
958f6d00aad9ce038ea1b96a92e9d70099bb396b |
|
04-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: Make UserEvent::Fire() work without gSchedulerLock held
|
#
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
|