*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- * MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
*/
#ifdef HAVE_CONFIG_H
#include <gdk/gdk.h>
#include <string.h>
-#include <ltt/trace.h>
-
#include <lttv/lttv.h>
-#include <lttv/tracecontext.h>
#include <lttvwindow/lttvwindow.h>
#include <lttv/state.h>
#include <lttv/hook.h>
Tab *tab = drawing->control_flow_data->tab;
TimeWindow time_window =
lttvwindow_get_time_window(tab);
+ LttvTraceset *traceset = lttvwindow_get_traceset(tab);
ControlFlowData *control_flow_data = drawing->control_flow_data;
// (ControlFlowData*)g_object_get_data(
control_flow_data);
{
- /* find the tracehooks */
- LttvTracesetContext *tsc = lttvwindow_get_traceset_context(tab);
- LttvTraceset *traceset = tsc->ts;
- LttvTraceState *ts;
- GArray *hooks;
- LttvTraceHook *th;
+ LttvHooks *event_hook = lttv_hooks_new();
+
+ lttv_hooks_add(event_hook,before_schedchange_hook , control_flow_data, LTTV_PRIO_STATE-5);
+ lttv_hooks_add(event_hook,before_execmode_hook , control_flow_data, LTTV_PRIO_STATE-5);
+ lttv_hooks_add(event_hook, after_schedchange_hook, control_flow_data, LTTV_PRIO_STATE+5);
- guint i, k;
- guint first_after;
+ guint i;
guint nb_trace = lttv_traceset_number(traceset);
// FIXME (fixed) : eventually request for more traces
EventsRequest *events_request = g_new(EventsRequest, 1);
// Create the hooks
//LttvHooks *event = lttv_hooks_new();
- LttvHooksByIdChannelArray *event_by_id_channel =
- lttv_hooks_by_id_channel_new();
+
LttvHooks *before_chunk_traceset = lttv_hooks_new();
LttvHooks *after_chunk_traceset = lttv_hooks_new();
LttvHooks *before_request_hook = lttv_hooks_new();
events_request,
LTTV_PRIO_DEFAULT);
-
- ts = (LttvTraceState *)tsc->traces[i];
-
- /* Find the eventtype id for the following events and register the
- associated by id hooks. */
-
- hooks = g_array_sized_new(FALSE, FALSE, sizeof(LttvTraceHook), 18);
-
- /* before hooks */
-
-// lttv_trace_find_hook(ts->parent.t,
-// LTT_FACILITY_ARCH,
-// LTT_EVENT_SYSCALL_ENTRY,
-// FIELD_ARRAY(LTT_FIELD_SYSCALL_ID),
-// before_execmode_hook,
-// events_request,
-// &hooks);
-//
-// lttv_trace_find_hook(ts->parent.t,
-// LTT_FACILITY_ARCH,
-// LTT_EVENT_SYSCALL_EXIT,
-// NULL,
-// before_execmode_hook,
-// events_request,
-// &hooks);
-//
- lttv_trace_find_hook(ts->parent.t,
- LTT_CHANNEL_KERNEL,
- LTT_EVENT_TRAP_ENTRY,
- FIELD_ARRAY(LTT_FIELD_TRAP_ID),
- before_execmode_hook,
- events_request,
- &hooks);
-
- lttv_trace_find_hook(ts->parent.t,
- LTT_CHANNEL_KERNEL,
- LTT_EVENT_TRAP_EXIT,
- NULL,
- before_execmode_hook,
- events_request,
- &hooks);
-
- lttv_trace_find_hook(ts->parent.t,
- LTT_CHANNEL_KERNEL,
- LTT_EVENT_PAGE_FAULT_ENTRY,
- FIELD_ARRAY(LTT_FIELD_TRAP_ID),
- before_execmode_hook,
- events_request,
- &hooks);
-
- lttv_trace_find_hook(ts->parent.t,
- LTT_CHANNEL_KERNEL,
- LTT_EVENT_PAGE_FAULT_EXIT,
- NULL,
- before_execmode_hook,
- events_request,
- &hooks);
-
- lttv_trace_find_hook(ts->parent.t,
- LTT_CHANNEL_KERNEL,
- LTT_EVENT_PAGE_FAULT_NOSEM_ENTRY,
- FIELD_ARRAY(LTT_FIELD_TRAP_ID),
- before_execmode_hook,
- events_request,
- &hooks);
-
- lttv_trace_find_hook(ts->parent.t,
- LTT_CHANNEL_KERNEL,
- LTT_EVENT_PAGE_FAULT_NOSEM_EXIT,
- NULL,
- before_execmode_hook,
- events_request,
- &hooks);
-
- lttv_trace_find_hook(ts->parent.t,
- LTT_CHANNEL_KERNEL,
- LTT_EVENT_IRQ_ENTRY,
- FIELD_ARRAY(LTT_FIELD_IRQ_ID),
- before_execmode_hook,
- events_request,
- &hooks);
-
- lttv_trace_find_hook(ts->parent.t,
- LTT_CHANNEL_KERNEL,
- LTT_EVENT_IRQ_EXIT,
- NULL,
- before_execmode_hook,
- events_request,
- &hooks);
-
- lttv_trace_find_hook(ts->parent.t,
- LTT_CHANNEL_KERNEL,
- LTT_EVENT_SOFT_IRQ_RAISE,
- FIELD_ARRAY(LTT_FIELD_SOFT_IRQ_ID),
- before_execmode_hook,
- events_request,
- &hooks);
-
- lttv_trace_find_hook(ts->parent.t,
- LTT_CHANNEL_KERNEL,
- LTT_EVENT_SOFT_IRQ_ENTRY,
- FIELD_ARRAY(LTT_FIELD_SOFT_IRQ_ID),
- before_execmode_hook,
- events_request,
- &hooks);
-
- lttv_trace_find_hook(ts->parent.t,
- LTT_CHANNEL_KERNEL,
- LTT_EVENT_SOFT_IRQ_EXIT,
- NULL,
- before_execmode_hook,
- events_request,
- &hooks);
-
-
- lttv_trace_find_hook(ts->parent.t,
- LTT_CHANNEL_KERNEL,
- LTT_EVENT_SCHED_SCHEDULE,
- FIELD_ARRAY(LTT_FIELD_PREV_PID, LTT_FIELD_NEXT_PID, LTT_FIELD_PREV_STATE),
- before_schedchange_hook,
- events_request,
- &hooks);
-
-// lttv_trace_find_hook(ts->parent.t,
-// LTT_CHANNEL_KERNEL,
-// LTT_EVENT_PROCESS_EXIT,
-// FIELD_ARRAY(LTT_FIELD_PID),
-// before_process_exit_hook,
-// events_request,
-// &hooks);
-//
-// lttv_trace_find_hook(ts->parent.t,
-// LTT_CHANNEL_KERNEL,
-// LTT_EVENT_PROCESS_FREE,
-// FIELD_ARRAY(LTT_FIELD_PID),
-// before_process_release_hook,
-// events_request,
-// &hooks);
-//
-// lttv_trace_find_hook(ts->parent.t,
-// LTT_FACILITY_LIST,
-// LTT_EVENT_STATEDUMP_END,
-// NULL,
-// before_statedump_end,
-// events_request,
-// &hooks);
-
- lttv_trace_find_hook(ts->parent.t,
- LTT_CHANNEL_BLOCK,
- LTT_EVENT_REQUEST_ISSUE,
- FIELD_ARRAY(LTT_FIELD_MAJOR, LTT_FIELD_MINOR, LTT_FIELD_OPERATION),
- before_bdev_event_hook,
- events_request,
- &hooks);
-
- lttv_trace_find_hook(ts->parent.t,
- LTT_CHANNEL_BLOCK,
- LTT_EVENT_REQUEST_COMPLETE,
- FIELD_ARRAY(LTT_FIELD_MAJOR, LTT_FIELD_MINOR, LTT_FIELD_OPERATION),
- before_bdev_event_hook,
- events_request,
- &hooks);
-
- /* After hooks */
- first_after = hooks->len;
-
- lttv_trace_find_hook(ts->parent.t,
- LTT_CHANNEL_KERNEL,
- LTT_EVENT_SCHED_SCHEDULE,
- FIELD_ARRAY(LTT_FIELD_PREV_PID, LTT_FIELD_NEXT_PID, LTT_FIELD_PREV_STATE),
- after_schedchange_hook,
- events_request,
- &hooks);
-
-// lttv_trace_find_hook(ts->parent.t,
-// LTT_CHANNEL_KERNEL,
-// LTT_EVENT_PROCESS_FORK,
-// FIELD_ARRAY(LTT_FIELD_PARENT_PID, LTT_FIELD_CHILD_PID),
-// after_process_fork_hook,
-// events_request,
-// &hooks);
-//
-// lttv_trace_find_hook(ts->parent.t,
-// LTT_CHANNEL_KERNEL,
-// LTT_EVENT_PROCESS_EXIT,
-// FIELD_ARRAY(LTT_FIELD_PID),
-// after_process_exit_hook,
-// events_request,
-// &hooks);
-//
-// lttv_trace_find_hook(ts->parent.t,
-// LTT_CHANNEL_KERNEL,
-// LTT_EVENT_EXEC,
-// NULL,
-// after_fs_exec_hook,
-// events_request,
-// &hooks);
-//
-// lttv_trace_find_hook(ts->parent.t,
-// LTT_FACILITY_USER_GENERIC,
-// LTT_EVENT_THREAD_BRAND,
-// FIELD_ARRAY(LTT_FIELD_NAME),
-// after_user_generic_thread_brand_hook,
-// events_request,
-// &hooks);
-//
-// lttv_trace_find_hook(ts->parent.t,
-// LTT_FACILITY_LIST,
-// LTT_EVENT_PROCESS_STATE,
-// FIELD_ARRAY(LTT_FIELD_PID, LTT_FIELD_PARENT_PID, LTT_FIELD_NAME),
-// after_event_enum_process_hook,
-// events_request,
-// &hooks);
-
-
- /* Add these hooks to each event_by_id hooks list */
- /* add before */
- for(k = 0 ; k < first_after ; k++) {
- th = &g_array_index(hooks, LttvTraceHook, k);
- lttv_hooks_add(lttv_hooks_by_id_channel_find(event_by_id_channel,
- th->channel, th->id),
- th->h,
- th,
- LTTV_PRIO_STATE-5);
- }
-
- /* add after */
- for(k = first_after ; k < hooks->len ; k++) {
- th = &g_array_index(hooks, LttvTraceHook, k);
- lttv_hooks_add(lttv_hooks_by_id_channel_find(event_by_id_channel,
- th->channel, th->id),
- th->h,
- th,
- LTTV_PRIO_STATE+5);
- }
-
- events_request->hooks = hooks;
-
// Fill the events request
events_request->owner = control_flow_data;
events_request->viewer_data = control_flow_data;
events_request->before_chunk_traceset = before_chunk_traceset;
events_request->before_chunk_trace = NULL;
events_request->before_chunk_tracefile = NULL;
- events_request->event = NULL;
- events_request->event_by_id_channel = event_by_id_channel;
+ events_request->event = event_hook;
events_request->after_chunk_tracefile = NULL;
events_request->after_chunk_trace = NULL;
events_request->after_chunk_traceset = after_chunk_traceset;
return;
}
-void drawing_data_request_begin(EventsRequest *events_request, LttvTracesetState *tss)
+void drawing_data_request_begin(EventsRequest *events_request)
{
int i;
}
-void drawing_chunk_begin(EventsRequest *events_request, LttvTracesetState *tss)
+void drawing_chunk_begin(EventsRequest *events_request, LttvTraceset *ts)
{
g_debug("Begin of chunk");
ControlFlowData *cfd = events_request->viewer_data;
- LttvTracesetContext *tsc = &tss->parent;
guint i;
- LttvTraceset *traceset = tsc->ts;
- guint nb_trace = lttv_traceset_number(traceset);
+ guint nb_trace = lttv_traceset_number(ts);
if(!cfd->process_list->current_hash_data) {
cfd->process_list->current_hash_data = g_new(HashedResourceData**,nb_trace);
for(i = 0 ; i < nb_trace ; i++) {
- guint num_cpu = ltt_trace_get_num_cpu(tss->parent.traces[i]->t);
+ guint num_cpu = lttv_trace_get_num_cpu(lttv_traceset_get(ts, i));
cfd->process_list->current_hash_data[i] = g_new(HashedResourceData*,num_cpu);
memset(cfd->process_list->current_hash_data[i], 0,
sizeof(HashedResourceData*)*num_cpu);
void drawing_request_expose(EventsRequest *events_request,
- LttvTracesetState *tss,
LttTime end_time)
{
gint x, width;