diff options
author | Steven Rostedt <srostedt@redhat.com> | 2009-11-24 19:23:29 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2009-11-24 19:23:29 -0500 |
commit | c03ba8fdbc9ab495a2a4fb6b644f9f2810f183fe (patch) | |
tree | 74614e3290538825ebdd74f6a11f64f99fd1076c | |
parent | 832c926079b9389e51ada203511da4b51c5a0206 (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.c | 101 |
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 | ||
3407 | int parse_ftrace_file(char *buf, unsigned long size) | 3407 | int 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 | |||
3472 | int 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 | ||
3491 | int parse_ftrace_file(char *buf, unsigned long size) | ||
3492 | { | ||
3493 | return parse_event_file(buf, size, "ftrace"); | ||
3494 | } | ||
3495 | |||
3519 | void parse_set_info(int nr_cpus, int long_sz) | 3496 | void parse_set_info(int nr_cpus, int long_sz) |
3520 | { | 3497 | { |
3521 | cpus = nr_cpus; | 3498 | cpus = nr_cpus; |