History log of /haiku/src/bin/debug/scheduling_recorder/scheduling_recorder.cpp
Revision Date Author Comments
# 6ed2992f 25-May-2014 Axel Dörfler <axeld@pinc-software.de>

scheduling_recorder: fixed spelling.


# 21726702 07-Nov-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

scheduling_recorder: Fix signal handling

* The sa_flags field of the structure passed to sigaction() wasn't
cleared, which resulted in the wrong type of handler function being
called and the second parameter not being the expected user data.
* Always check fCaughtDeadlySignal in the main loop, so the signal
doesn't have to hit the _kern_system_profiler_next_buffer() call
(though that's the most likely one anyway).

Now scheduling_recorder can be stopped with a single Ctrl-C again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43219 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 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


# 83f19b67 19-Dec-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* scheduling_recorder also records I/O scheduling events, now.
* DebugAnalyzer ignores those events for the time being.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34706 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 227fe7d3 23-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Scheduler/wait object listener:
- Moved scheduler listening interface to <listeners.h> and added more
convenient to use templatized notification functions.
- Added a listener mechanism for the wait objects (semaphores, condition
variables, mutex, rw_lock).
* system profiler:
- Hopefully fixed locking issues related to notifying the profiler thread
for good. We still had an inconsistent locking order, since the scheduler
notification callbacks are invoked with the thread lock held and have to
acquire the object lock then, while the other callbacks acquired the object
lock first and as a side effect of ConditionVariable::NotifyOne() acquired
the thread lock. Now we make sure the object lock is the innermost lock.
- Track the number of dropped events due to a full buffer.
_user_system_profiler_next_buffer() returns this count now.
- When scheduling profiling events are requested also listen to wait objects
and generate the respective profiling events. We send those events lazily
and cache the infos to avoid resending an event for the same wait object.
- When starting profiling we do now generate "thread scheduled" events for
the already running threads.
- _user_system_profiler_start(): Check whether the parameters pointer is a
userland address at all.
- The system_profiler_team_added event does now also contain the team's name.
* Added a sem_get_name_unsafe() returning a semaphore's name. It is "unsafe",
since the caller has to ensure that the semaphore exists and continues to
exist as long as the returned name is used.
* Adjusted the "profile" and "scheduling_recorder" according to the system
profiling changes. The latter prints the number of dropped events, now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30345 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1bb436e1 18-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Accidentally removed char.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30251 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2a48ded7 18-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Added a simple tool "scheduling_recorder" that records scheduling information
(as generated by the system profiling interface) to a file for later analysis.
Only the analysis tool is missing, yet. :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30245 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6ed2992fb6199d02cf583b7880c94df7c83c2b7a 25-May-2014 Axel Dörfler <axeld@pinc-software.de>

scheduling_recorder: fixed spelling.


# 21726702370b74fb7b5c7e95b457319ff4fc844f 07-Nov-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

scheduling_recorder: Fix signal handling

* The sa_flags field of the structure passed to sigaction() wasn't
cleared, which resulted in the wrong type of handler function being
called and the second parameter not being the expected user data.
* Always check fCaughtDeadlySignal in the main loop, so the signal
doesn't have to hit the _kern_system_profiler_next_buffer() call
(though that's the most likely one anyway).

Now scheduling_recorder can be stopped with a single Ctrl-C again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43219 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 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


# 83f19b67346f25917b562e725617b548590b4b33 19-Dec-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* scheduling_recorder also records I/O scheduling events, now.
* DebugAnalyzer ignores those events for the time being.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34706 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 227fe7d34aeed45d0727a0abde2ea2309352983b 23-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Scheduler/wait object listener:
- Moved scheduler listening interface to <listeners.h> and added more
convenient to use templatized notification functions.
- Added a listener mechanism for the wait objects (semaphores, condition
variables, mutex, rw_lock).
* system profiler:
- Hopefully fixed locking issues related to notifying the profiler thread
for good. We still had an inconsistent locking order, since the scheduler
notification callbacks are invoked with the thread lock held and have to
acquire the object lock then, while the other callbacks acquired the object
lock first and as a side effect of ConditionVariable::NotifyOne() acquired
the thread lock. Now we make sure the object lock is the innermost lock.
- Track the number of dropped events due to a full buffer.
_user_system_profiler_next_buffer() returns this count now.
- When scheduling profiling events are requested also listen to wait objects
and generate the respective profiling events. We send those events lazily
and cache the infos to avoid resending an event for the same wait object.
- When starting profiling we do now generate "thread scheduled" events for
the already running threads.
- _user_system_profiler_start(): Check whether the parameters pointer is a
userland address at all.
- The system_profiler_team_added event does now also contain the team's name.
* Added a sem_get_name_unsafe() returning a semaphore's name. It is "unsafe",
since the caller has to ensure that the semaphore exists and continues to
exist as long as the returned name is used.
* Adjusted the "profile" and "scheduling_recorder" according to the system
profiling changes. The latter prints the number of dropped events, now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30345 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1bb436e17fd24bfb43ef8fc1b311111029393f42 18-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Accidentally removed char.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30251 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2a48ded78bd0fecf50012bc56c288f637f615c4f 18-Apr-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Added a simple tool "scheduling_recorder" that records scheduling information
(as generated by the system profiling interface) to a file for later analysis.
Only the analysis tool is missing, yet. :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30245 a95241bf-73f2-0310-859d-f6bbb57e9c96