- //add_context_hooks(event_viewer_data,tsc);
- //seek state because we use the main window's traceset context.
- lttv_state_traceset_seek_time_closest(LTTV_TRACESET_STATE(tsc), start);
- lttv_process_traceset_middle(tsc, start, G_MAXUINT, NULL);
- lttv_process_traceset_begin(tsc,
- NULL,
- NULL,
- NULL,
- event_viewer_data->event_hooks,
- NULL);
- if(event_viewer_data->append == TRUE) {
- /* append data */
- lttv_process_traceset_middle(tsc, end, max_num_events, NULL);
- } else{
- guint count;
- LttvTracefileContext *tfc;
- /* prepend data */
- do {
- /* clear the temp list */
- while(g_queue_pop_head(event_viewer_data->event_fields_queue_tmp));
- /* read max_num events max */
- count = lttv_process_traceset_middle(tsc, end, max_num_events, NULL);
- /* loop if reached the max number of events to read, but not
- * if end of trace or end time reached.*/
- tfc = lttv_traceset_context_get_current_tfc(tsc);
- } while(max_num_events == count
- && (tfc != NULL && ltt_time_compare(tfc->timestamp, end) < 0));
-
- }
-
- //remove_context_hooks(event_viewer_data,tsc);
- lttv_process_traceset_end(tsc,
- NULL,
- NULL,
- NULL,
- event_viewer_data->event_hooks,
- NULL);
- int size;
-
- size = event_viewer_data->event_fields_queue_tmp->length;
- *real_num_events = size;
-
- update_raw_data_array(event_viewer_data,size);
-
-#if 0
- EventsRequest *events_request = g_new(EventsRequest, 1);
- // Create the hooks
- LttvHooks *event = lttv_hooks_new();
- LttvHooks *after_request = lttv_hooks_new();
-
- lttv_hooks_add(after_request,
- after_get_events,
- events_request,
- LTTV_PRIO_DEFAULT);
- lttv_hooks_add(event,
- parse_event,
- event_viewer_data,
- LTTV_PRIO_DEFAULT);
-
- // Fill the events request
- events_request->owner = event_viewer_data;
- events_request->viewer_data = event_viewer_data;
- events_request->servicing = FALSE;
- events_request->start_time = start;
- events_request->start_position = NULL;
- events_request->stop_flag = FALSE;
- events_request->end_time = ltt_time_infinite;
- events_request->num_events = max_num_events;
- events_request->end_position = NULL;
- events_request->trace = -1; /* FIXME */
- events_request->hooks = NULL; /* FIXME */
- events_request->before_chunk_traceset = NULL;
- events_request->before_chunk_trace = NULL;
- events_request->before_chunk_tracefile = NULL;
- events_request->event = event;
- events_request->event_by_id = NULL;
- events_request->after_chunk_tracefile = NULL;
- events_request->after_chunk_trace = NULL;
- events_request->after_chunk_traceset = NULL;
- events_request->before_request = NULL;
- events_request->after_request = after_request;
-
- g_debug("req : start : %u, %u", start.tv_sec,
- start.tv_nsec);
-
- lttvwindow_events_request_remove_all(tab,
- event_viewer_data);
- lttvwindow_events_request(tab, events_request);
-#endif //0
-}
-#if 0
-static int after_get_events(void *hook_data, void *call_data)
-{
- EventViewerData *event_viewer_data = (EventViewerData *)hook_data;
- int size;
-
- size = event_viewer_data->event_fields_queue_tmp->length;
- *real_num_events = size;
-
- update_raw_data_array(event_viewer_data,size);
-}
-#endif //0
-
-static void get_event_detail(LttEvent *e, LttField *f, GString * s)
-{
- LttType *type;
- LttField *element;
- char *name;
- int nb, i;
-
- type = ltt_field_type(f);
- switch(ltt_type_class(type)) {
- case LTT_INT:
- g_string_append_printf(s, " %ld", ltt_event_get_long_int(e,f));
- break;
-
- case LTT_UINT:
- g_string_append_printf(s, " %lu", ltt_event_get_long_unsigned(e,f));
- break;
-
- case LTT_FLOAT:
- g_string_append_printf(s, " %g", ltt_event_get_double(e,f));
- break;
-
- case LTT_STRING:
- g_string_append_printf(s, " \"%s\"", ltt_event_get_string(e,f));
- break;
-
- case LTT_ENUM:
- g_string_append_printf(s, " %s", ltt_enum_string_get(type,
- ltt_event_get_unsigned(e,f)-1));
- break;
-
- case LTT_ARRAY:
- case LTT_SEQUENCE:
- g_string_append_printf(s, " {");
- nb = ltt_event_field_element_number(e,f);
- element = ltt_field_element(f);
- for(i = 0 ; i < nb ; i++) {
- ltt_event_field_element_select(e,f,i);
- get_event_detail(e, element, s);
- }
- g_string_append_printf(s, " }");
- break;
-
- case LTT_STRUCT:
- g_string_append_printf(s, " {");
- nb = ltt_type_member_number(type);
- for(i = 0 ; i < nb ; i++) {
- element = ltt_field_member(f,i);
- ltt_type_member_type(type, i, &name);
- g_string_append_printf(s, " %s = ", name);
- get_event_detail(e, element, s);
- }
- g_string_append_printf(s, " }");
- break;
-
- case LTT_UNION:
- g_string_append_printf(s, " {");
- nb = ltt_type_member_number(type);
- for(i = 0 ; i < nb ; i++) {
- element = ltt_field_member(f,i);
- ltt_type_member_type(type, i, &name);
- g_string_append_printf(s, " %s = ", name);
- get_event_detail(e, element, s);
- }
- g_string_append_printf(s, " }");
- break;
-
- }
-
-}
-
-static void get_pid(unsigned * in, unsigned * out, char * s)
-{
- char * str;
- str = strstr(s, "out =");
- if (str){
- str = str + 5;
- sscanf(str,"%d", out);
- }else{
- g_warning("Can not find out pid\n");
- }
-
- str = strstr(s,"in =");
- if (str){
- str = str + 4;
- sscanf(str,"%d", in);
- }else{
- g_warning("Can not find in pid\n");