litl 0.1.9
litl_print.c
Go to the documentation of this file.
1/* -*- c-file-style: "GNU" -*- */
2/*
3 * Copyright © Télécom SudParis.
4 * See COPYING in top-level directory.
5 */
6
18#include <string.h>
19#include <stdlib.h>
20
21#include "litl_tools.h"
22#include "litl_read.h"
23
24static char* __input_filename = "trace";
25
26static void __litl_read_usage(int argc __attribute__((unused)), char **argv) {
27 fprintf(stderr, "Usage: %s [-f input_filename] \n", argv[0]);
28 printf(" -?, -h: Display this help and exit\n");
29}
30
31static void __litl_read_parse_args(int argc, char **argv) {
32 int i;
33
34 for (i = 1; i < argc; i++) {
35 if ((strcmp(argv[i], "-f") == 0)) {
36 __input_filename = argv[++i];
37 } else if ((strcmp(argv[i], "-h") || strcmp(argv[i], "-?")) == 0) {
38 __litl_read_usage(argc, argv);
39 exit(-1);
40 } else if (argv[i][0] == '-') {
41 fprintf(stderr, "Unknown option %s\n", argv[i]);
42 __litl_read_usage(argc, argv);
43 exit(-1);
44 }
45 }
46
47 if (strcmp(__input_filename, "trace") == 0) {
48 __litl_read_usage(argc, argv);
49 exit(-1);
50 }
51}
52
53int main(int argc, char **argv) {
55 litl_read_event_t* event;
56 litl_read_trace_t *trace;
57 litl_general_header_t* trace_header;
58 litl_process_header_t* process_header;
59
60 // parse the arguments passed to this program
61 __litl_read_parse_args(argc, argv);
62
63 trace = litl_read_open_trace(__input_filename);
64
66
67 trace_header = litl_read_get_trace_header(trace);
68 process_header = litl_read_get_process_header(trace->processes[0]);
69
70 // print the header
71 printf(" LiTL v.%s\n", trace_header->litl_ver);
72 printf(" %s\n", trace_header->sysinfo);
73 printf(" nb_processes \t %d\n", trace_header->nb_processes);
74 if (trace_header->nb_processes == 1)
75 printf(" nb_threads \t %d\n", process_header->nb_threads);
76 printf(
77 " buffer_size \t %d\n",
78 trace->processes[0]->header->buffer_size
81
82 printf(
83 "[Timestamp]\t[ThreadID]\t[EventType]\t[EventCode]\t[NbParam]\t[Parameters]\n");
84 while (1) {
85 event = litl_read_next_event(trace);
86
87 if (event == NULL )
88 break;
89
90 switch (LITL_READ_GET_TYPE(event)) {
91 case LITL_TYPE_REGULAR: { // regular event
92 printf("%"PRTIu64" \t%"PRTIu64" \t Reg %"PRTIx32" \t %"PRTIu32,
94 LITL_READ_GET_CODE(event), LITL_READ_REGULAR(event)->nb_params);
95
96 for (i = 0; i < LITL_READ_REGULAR(event)->nb_params; i++)
97 printf("\t %"PRTIx64, LITL_READ_REGULAR(event)->param[i]);
98 break;
99 }
100 case LITL_TYPE_RAW: { // raw event
101 printf("%"PRTIu64"\t%"PRTIu64" \t Raw %"PRTIx32" \t %"PRTIu32,
103 LITL_READ_GET_CODE(event), LITL_READ_RAW(event)->size);
104 printf("\t %s", (litl_data_t *) LITL_READ_RAW(event)->data);
105 break;
106 }
107 case LITL_TYPE_PACKED: { // packed event
108 printf("%"PRTIu64" \t%"PRTIu64" \t Packed %"PRTIx32" \t %"PRTIu32"\t",
110 LITL_READ_GET_CODE(event), LITL_READ_PACKED(event)->size);
111 for (i = 0; i < LITL_READ_PACKED(event)->size; i++) {
112 printf(" %x", LITL_READ_PACKED(event)->param[i]);
113 }
114 break;
115 }
116 case LITL_TYPE_OFFSET: { // offset event
117 continue;
118 }
119 default: {
120 fprintf(stderr, "Unknown event type %d\n", LITL_READ_GET_TYPE(event));
121 abort();
122 }
123 }
124
125 printf("\n");
126 }
127
129
130 return EXIT_SUCCESS;
131}
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.
Definition: litl_read.c:187
litl_process_header_t * litl_read_get_process_header(litl_read_process_t *process)
Returns a pointer to the process header.
Definition: litl_read.c:245
litl_general_header_t * litl_read_get_trace_header(litl_read_trace_t *trace)
Returns a pointer to the trace header.
Definition: litl_read.c:238
void litl_read_init_processes(litl_read_trace_t *trace)
Initializes the event reading structure.
Definition: litl_read.c:206
void litl_read_finalize_trace(litl_read_trace_t *trace)
Closes the trace and frees the allocated memory.
Definition: litl_read.c:451
litl_read_event_t * litl_read_next_event(litl_read_trace_t *trace)
Reads the next event from a trace file.
Definition: litl_read.c:432
#define LITL_READ_GET_CODE(read_event)
Returns a code of a given event.
Definition: litl_read.h:243
#define LITL_READ_PACKED(read_event)
Returns a size and a list of parameters of a packed event.
Definition: litl_read.h:262
#define LITL_READ_RAW(read_event)
Returns a size and parameters in the string format of a raw event.
Definition: litl_read.h:250
#define LITL_READ_REGULAR(read_event)
Returns a size and a list of parameters of a regular event.
Definition: litl_read.h:256
#define LITL_READ_GET_TIME(read_event)
Returns a time stamp of a given event.
Definition: litl_read.h:231
#define LITL_READ_GET_TYPE(read_event)
Returns a type of a given event.
Definition: litl_read.h:237
#define LITL_READ_GET_TID(read_event)
Returns a thread id of a given event.
Definition: litl_read.h:225
litl_size_t __litl_get_reg_event_size(litl_data_t nb_params)
Returns the size of a regular event (in Bytes) depending on the number of its parameters.
Definition: litl_tools.c:18
uint8_t litl_data_t
A data type for the optimized storage of parameters.
Definition: litl_types.h:157
#define LITL_MAX_PARAMS
Defines the maximum number of parameters.
Definition: litl_types.h:169
uint16_t litl_med_size_t
An auxiliary data type for the optimized storage of data.
Definition: litl_types.h:152
@ LITL_TYPE_RAW
Definition: litl_types.h:182
@ LITL_TYPE_PACKED
Definition: litl_types.h:183
@ LITL_TYPE_REGULAR
Definition: litl_types.h:181
@ LITL_TYPE_OFFSET
Definition: litl_types.h:184
int main(int argc, char **argv)
Definition: litl_print.c:53
litl_read Provides a set of functions for reading events from a regular trace file or an archive of t...
litl_tools Provides a set of auxiliary functions
#define PRTIx64
Definition: litl_types.h:446
#define PRTIu32
Definition: litl_types.h:437
#define PRTIx32
Definition: litl_types.h:438
#define PRTIu64
Definition: litl_types.h:445
A general data structure that corresponds to the header of a trace file.
Definition: litl_types.h:249
litl_data_t litl_ver[8]
Definition: litl_types.h:250
litl_med_size_t nb_processes
Definition: litl_types.h:252
litl_data_t sysinfo[128]
Definition: litl_types.h:251
A general data structure that corresponds to the header of a trace file.
Definition: litl_types.h:260
litl_med_size_t nb_threads
Definition: litl_types.h:262
litl_size_t buffer_size
Definition: litl_types.h:264
A data structure for reading one event.
Definition: litl_types.h:345
litl_process_header_t * header
Definition: litl_types.h:371
A data structure for reading events from both regular trace files and archives of traces.
Definition: litl_types.h:387
litl_read_process_t ** processes
Definition: litl_types.h:395