127 #define __LITL_READ_INIT_PTR(evt, _ptr_) \
129 if(LITL_READ_GET_TYPE(evt) == LITL_TYPE_REGULAR) \
130 _ptr_ = &LITL_READ_REGULAR(evt)->param[0]; \
132 _ptr_ = &LITL_READ_PACKED(evt)->param[0]; \
139 #define __LITL_READ_GET_ARG(evt, _ptr_, arg) \
141 if(LITL_READ_GET_TYPE(evt) == LITL_TYPE_REGULAR) \
142 __LITL_READ_GET_ARG_REGULAR(_ptr_, arg); \
144 __LITL_READ_GET_ARG_PACKED(_ptr_, arg); \
151 #define __LITL_READ_GET_ARG_REGULAR(_ptr_, arg) do { \
152 arg = (typeof(arg)) *(litl_param_t*)_ptr_; \
153 (litl_param_t*)_ptr_++; \
160 #define __LITL_READ_GET_ARG_PACKED(_ptr_, arg) do { \
161 memcpy(&arg, _ptr_, sizeof(arg)); \
162 _ptr_ = ((char*)_ptr_)+sizeof(arg); \
173 #define LITL_READ_GET_CUR_EVENT_PER_THREAD(process, thread_index) \
174 (&(process)->threads[(thread_index)]->cur_event)
180 #define LITL_READ_GET_CUR_EVENT(process) \
181 LITL_READ_GET_CUR_EVENT_PER_THREAD(process, (process)->cur_index)
188 #define LITL_READ_GET_TID(read_event) (read_event)->tid
194 #define LITL_READ_GET_TIME(read_event) (read_event)->event->time
200 #define LITL_READ_GET_TYPE(read_event) (read_event)->event->type
206 #define LITL_READ_GET_CODE(read_event) (read_event)->event->code
213 #define LITL_READ_RAW(read_event) (&(read_event)->event->parameters.raw)
219 #define LITL_READ_REGULAR(read_event) (&(read_event)->event->parameters.regular)
225 #define LITL_READ_PACKED(read_event) (&(read_event)->event->parameters.packed)
231 #define LITL_READ_OFFSET(read_event) (&(read_event)->event->parameters.offset)
239 #define litl_read_get_param_1(p_evt, \
243 __LITL_READ_INIT_PTR(p_evt, _ptr_); \
244 __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \
254 #define litl_read_get_param_2(p_evt, \
259 __LITL_READ_INIT_PTR(p_evt, _ptr_); \
260 __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \
261 __LITL_READ_GET_ARG(p_evt, _ptr_, param2); \
272 #define litl_read_get_param_3(p_evt, \
278 __LITL_READ_INIT_PTR(p_evt, _ptr_); \
279 __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \
280 __LITL_READ_GET_ARG(p_evt, _ptr_, param2); \
281 __LITL_READ_GET_ARG(p_evt, _ptr_, param3); \
293 #define litl_read_get_param_4(p_evt, \
300 __LITL_READ_INIT_PTR(p_evt, _ptr_); \
301 __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \
302 __LITL_READ_GET_ARG(p_evt, _ptr_, param2); \
303 __LITL_READ_GET_ARG(p_evt, _ptr_, param3); \
304 __LITL_READ_GET_ARG(p_evt, _ptr_, param4); \
317 #define litl_read_get_param_5(p_evt, \
325 __LITL_READ_INIT_PTR(p_evt, _ptr_); \
326 __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \
327 __LITL_READ_GET_ARG(p_evt, _ptr_, param2); \
328 __LITL_READ_GET_ARG(p_evt, _ptr_, param3); \
329 __LITL_READ_GET_ARG(p_evt, _ptr_, param4); \
330 __LITL_READ_GET_ARG(p_evt, _ptr_, param5); \
344 #define litl_read_get_param_6(p_evt, \
353 __LITL_READ_INIT_PTR(p_evt, _ptr_); \
354 __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \
355 __LITL_READ_GET_ARG(p_evt, _ptr_, param2); \
356 __LITL_READ_GET_ARG(p_evt, _ptr_, param3); \
357 __LITL_READ_GET_ARG(p_evt, _ptr_, param4); \
358 __LITL_READ_GET_ARG(p_evt, _ptr_, param5); \
359 __LITL_READ_GET_ARG(p_evt, _ptr_, param6); \
374 #define litl_read_get_param_7(p_evt, \
384 __LITL_READ_INIT_PTR(p_evt, _ptr_); \
385 __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \
386 __LITL_READ_GET_ARG(p_evt, _ptr_, param2); \
387 __LITL_READ_GET_ARG(p_evt, _ptr_, param3); \
388 __LITL_READ_GET_ARG(p_evt, _ptr_, param4); \
389 __LITL_READ_GET_ARG(p_evt, _ptr_, param5); \
390 __LITL_READ_GET_ARG(p_evt, _ptr_, param6); \
391 __LITL_READ_GET_ARG(p_evt, _ptr_, param7); \
407 #define litl_read_get_param_8(p_evt, \
418 __LITL_READ_INIT_PTR(p_evt, _ptr_); \
419 __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \
420 __LITL_READ_GET_ARG(p_evt, _ptr_, param2); \
421 __LITL_READ_GET_ARG(p_evt, _ptr_, param3); \
422 __LITL_READ_GET_ARG(p_evt, _ptr_, param4); \
423 __LITL_READ_GET_ARG(p_evt, _ptr_, param5); \
424 __LITL_READ_GET_ARG(p_evt, _ptr_, param6); \
425 __LITL_READ_GET_ARG(p_evt, _ptr_, param7); \
426 __LITL_READ_GET_ARG(p_evt, _ptr_, param8); \
443 #define litl_read_get_param_9(p_evt, \
455 __LITL_READ_INIT_PTR(p_evt, _ptr_); \
456 __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \
457 __LITL_READ_GET_ARG(p_evt, _ptr_, param2); \
458 __LITL_READ_GET_ARG(p_evt, _ptr_, param3); \
459 __LITL_READ_GET_ARG(p_evt, _ptr_, param4); \
460 __LITL_READ_GET_ARG(p_evt, _ptr_, param5); \
461 __LITL_READ_GET_ARG(p_evt, _ptr_, param6); \
462 __LITL_READ_GET_ARG(p_evt, _ptr_, param7); \
463 __LITL_READ_GET_ARG(p_evt, _ptr_, param8); \
464 __LITL_READ_GET_ARG(p_evt, _ptr_, param9); \
482 #define litl_read_get_param_10(p_evt, \
495 __LITL_READ_INIT_PTR(p_evt, _ptr_); \
496 __LITL_READ_GET_ARG(p_evt, _ptr_, param1); \
497 __LITL_READ_GET_ARG(p_evt, _ptr_, param2); \
498 __LITL_READ_GET_ARG(p_evt, _ptr_, param3); \
499 __LITL_READ_GET_ARG(p_evt, _ptr_, param4); \
500 __LITL_READ_GET_ARG(p_evt, _ptr_, param5); \
501 __LITL_READ_GET_ARG(p_evt, _ptr_, param6); \
502 __LITL_READ_GET_ARG(p_evt, _ptr_, param7); \
503 __LITL_READ_GET_ARG(p_evt, _ptr_, param8); \
504 __LITL_READ_GET_ARG(p_evt, _ptr_, param9); \
505 __LITL_READ_GET_ARG(p_evt, _ptr_, param10); \
A data structure for reading events from both regular trace files and archives of traces...
litl_read_trace_t * litl_read_open_trace(const char *filename)
Opens a trace and reads the first portion of data (trace header) to the buffer.
void litl_read_reset_process(litl_read_process_t *process)
Resets the trace pointer.
litl_process_header_t * litl_read_get_process_header(litl_read_process_t *process)
Returns a pointer to the process header.
A data structure for reading one event.
litl_size_t litl_read_get_buffer_size(litl_read_trace_t *trace)
Returns the buffer size.
A data structure for reading process-specific events.
litl_read_event_t * litl_read_next_process_event(litl_read_trace_t *trace, litl_read_process_t *process)
Reads the next event from a trace.
void litl_read_finalize_trace(litl_read_trace_t *trace)
Closes the trace and frees the allocated memory.
void litl_read_set_buffer_size(litl_read_trace_t *trace, const litl_size_t buf_size)
Sets the buffer size.
litl_read_event_t * litl_read_next_event(litl_read_trace_t *trace)
Reads the next event from a trace file.
litl_types Provides a set of data structures for recording and reading events as well as merging and ...
uint32_t litl_size_t
An auxiliary data type for storing data.
void litl_read_init_processes(litl_read_trace_t *trace)
Initializes the event reading structure.
litl_general_header_t * litl_read_get_trace_header(litl_read_trace_t *trace)
Returns a pointer to the trace header.