aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2009-11-24 19:23:29 -0500
committerSteven Rostedt <rostedt@goodmis.org>2009-11-24 19:23:29 -0500
commitc03ba8fdbc9ab495a2a4fb6b644f9f2810f183fe (patch)
tree74614e3290538825ebdd74f6a11f64f99fd1076c
parent832c926079b9389e51ada203511da4b51c5a0206 (diff)
Merge parse_ftrace_file() into prase_event_file()
With the new ftrace format, the parse_ftrace_file function is almost identical to the parse_event_file. Merge the two. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r--parse-events.c101
1 files changed, 39 insertions, 62 deletions
diff --git a/parse-events.c b/parse-events.c
index aac5561..40b25d4 100644
--- a/parse-events.c
+++ b/parse-events.c
@@ -3404,10 +3404,8 @@ int parse_header_page(char *buf, unsigned long size)
3404 return 0; 3404 return 0;
3405} 3405}
3406 3406
3407int parse_ftrace_file(char *buf, unsigned long size) 3407int parse_event_file(char *buf, unsigned long size, char *sys)
3408{ 3408{
3409 struct format_field *field;
3410 struct print_arg *arg, **list;
3411 struct event *event; 3409 struct event *event;
3412 int ret; 3410 int ret;
3413 3411
@@ -3417,73 +3415,27 @@ int parse_ftrace_file(char *buf, unsigned long size)
3417 if (!event) 3415 if (!event)
3418 return -ENOMEM; 3416 return -ENOMEM;
3419 3417
3420 event->flags |= EVENT_FL_ISFTRACE;
3421
3422 event->name = event_read_name(); 3418 event->name = event_read_name();
3423 if (!event->name) 3419 if (!event->name)
3424 die("failed to read ftrace event name"); 3420 die("failed to read event name");
3425
3426 if (strcmp(event->name, "function") == 0)
3427 event->flags |= EVENT_FL_ISFUNC;
3428
3429 else if (strcmp(event->name, "funcgraph_entry") == 0)
3430 event->flags |= EVENT_FL_ISFUNCENT;
3431 3421
3432 else if (strcmp(event->name, "funcgraph_exit") == 0) 3422 if (strcmp(sys, "ftrace") == 0) {
3433 event->flags |= EVENT_FL_ISFUNCRET;
3434 3423
3435 else if (strcmp(event->name, "bprint") == 0) 3424 event->flags |= EVENT_FL_ISFTRACE;
3436 event->flags |= EVENT_FL_ISBPRINT;
3437 3425
3438 event->id = event_read_id(); 3426 if (strcmp(event->name, "function") == 0)
3439 if (event->id < 0) 3427 event->flags |= EVENT_FL_ISFUNC;
3440 die("failed to read ftrace event id");
3441 3428
3442 add_event(event); 3429 else if (strcmp(event->name, "funcgraph_entry") == 0)
3430 event->flags |= EVENT_FL_ISFUNCENT;
3443 3431
3444 ret = event_read_format(event); 3432 else if (strcmp(event->name, "funcgraph_exit") == 0)
3445 if (ret < 0) 3433 event->flags |= EVENT_FL_ISFUNCRET;
3446 die("failed to read ftrace event format");
3447 3434
3448 ret = event_read_print(event); 3435 else if (strcmp(event->name, "bprint") == 0)
3449 if (ret < 0) 3436 event->flags |= EVENT_FL_ISBPRINT;
3450 die("failed to read ftrace event print fmt");
3451
3452 /* New ftrace handles args */
3453 if (ret > 0)
3454 return 0;
3455 /*
3456 * The arguments for ftrace files are parsed by the fields.
3457 * Set up the fields as their arguments.
3458 */
3459 list = &event->print_fmt.args;
3460 for (field = event->format.fields; field; field = field->next) {
3461 arg = malloc_or_die(sizeof(*arg));
3462 memset(arg, 0, sizeof(*arg));
3463 *list = arg;
3464 list = &arg->next;
3465 arg->type = PRINT_FIELD;
3466 arg->field.name = field->name;
3467 arg->field.field = field;
3468 } 3437 }
3469 return 0; 3438
3470}
3471
3472int parse_event_file(char *buf, unsigned long size, char *sys)
3473{
3474 struct event *event;
3475 int ret;
3476
3477 init_input_buf(buf, size);
3478
3479 event = alloc_event();
3480 if (!event)
3481 return -ENOMEM;
3482
3483 event->name = event_read_name();
3484 if (!event->name)
3485 die("failed to read event name");
3486
3487 event->id = event_read_id(); 3439 event->id = event_read_id();
3488 if (event->id < 0) 3440 if (event->id < 0)
3489 die("failed to read event id"); 3441 die("failed to read event id");
@@ -3502,11 +3454,31 @@ int parse_event_file(char *buf, unsigned long size, char *sys)
3502 3454
3503 event->system = strdup(sys); 3455 event->system = strdup(sys);
3504 3456
3457 add_event(event);
3458
3459 if (!ret && (event->flags & EVENT_FL_ISFTRACE)) {
3460 struct format_field *field;
3461 struct print_arg *arg, **list;
3462
3463 /* old ftrace had no args */
3464
3465 list = &event->print_fmt.args;
3466 for (field = event->format.fields; field; field = field->next) {
3467 arg = malloc_or_die(sizeof(*arg));
3468 memset(arg, 0, sizeof(*arg));
3469 *list = arg;
3470 list = &arg->next;
3471 arg->type = PRINT_FIELD;
3472 arg->field.name = field->name;
3473 arg->field.field = field;
3474 }
3475 return 0;
3476 }
3477
3505#define PRINT_ARGS 0 3478#define PRINT_ARGS 0
3506 if (PRINT_ARGS && event->print_fmt.args) 3479 if (PRINT_ARGS && event->print_fmt.args)
3507 print_args(event->print_fmt.args); 3480 print_args(event->print_fmt.args);
3508 3481
3509 add_event(event);
3510 return 0; 3482 return 0;
3511 3483
3512 event_failed: 3484 event_failed:
@@ -3516,6 +3488,11 @@ int parse_event_file(char *buf, unsigned long size, char *sys)
3516 return -1; 3488 return -1;
3517} 3489}
3518 3490
3491int parse_ftrace_file(char *buf, unsigned long size)
3492{
3493 return parse_event_file(buf, size, "ftrace");
3494}
3495
3519void parse_set_info(int nr_cpus, int long_sz) 3496void parse_set_info(int nr_cpus, int long_sz)
3520{ 3497{
3521 cpus = nr_cpus; 3498 cpus = nr_cpus;