diff options
| author | Darren Hart <dvhart@linux.intel.com> | 2011-01-04 15:43:38 -0500 |
|---|---|---|
| committer | Steven Rostedt <rostedt@goodmis.org> | 2011-01-04 20:23:16 -0500 |
| commit | 6bfc042cbfa9fe19ffe014531cfe135bc3c0da55 (patch) | |
| tree | cb1347e51c46480d7c70b1b46225803846535401 | |
| parent | f1b412402cff36987736748c150bd5c90dd5300b (diff) | |
trace-cmd: Move *_tracing_file into trace-util.c
Make tracecmd_(get|put)_tracing_file available to shared objects, such
the python ctracecmd.so module generated by the SWIG mechanism.
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
LKML-Reference: <1294173820-7043-2-git-send-email-dvhart@linux.intel.com>
CC: Tom Zanussi <tom.zanussi@intel.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
| -rw-r--r-- | trace-cmd.c | 111 | ||||
| -rw-r--r-- | trace-util.c | 24 |
2 files changed, 61 insertions, 74 deletions
diff --git a/trace-cmd.c b/trace-cmd.c index f54af18..5055db6 100644 --- a/trace-cmd.c +++ b/trace-cmd.c | |||
| @@ -55,19 +55,6 @@ | |||
| 55 | int silence_warnings; | 55 | int silence_warnings; |
| 56 | int show_status; | 56 | int show_status; |
| 57 | 57 | ||
| 58 | static char *get_tracing_file(const char *name); | ||
| 59 | static void put_tracing_file(char *file); | ||
| 60 | |||
| 61 | char *tracecmd_get_tracing_file(const char *name) | ||
| 62 | { | ||
| 63 | return get_tracing_file(name); | ||
| 64 | } | ||
| 65 | |||
| 66 | void tracecmd_put_tracing_file(char *name) | ||
| 67 | { | ||
| 68 | put_tracing_file(name); | ||
| 69 | } | ||
| 70 | |||
| 71 | static int tracing_on_init_val; | 58 | static int tracing_on_init_val; |
| 72 | 59 | ||
| 73 | static int rt_prio; | 60 | static int rt_prio; |
| @@ -306,11 +293,11 @@ static void clear_trace(void) | |||
| 306 | char *path; | 293 | char *path; |
| 307 | 294 | ||
| 308 | /* reset the trace */ | 295 | /* reset the trace */ |
| 309 | path = get_tracing_file("trace"); | 296 | path = tracecmd_get_tracing_file("trace"); |
| 310 | fp = fopen(path, "w"); | 297 | fp = fopen(path, "w"); |
| 311 | if (!fp) | 298 | if (!fp) |
| 312 | die("writing to '%s'", path); | 299 | die("writing to '%s'", path); |
| 313 | put_tracing_file(path); | 300 | tracecmd_put_tracing_file(path); |
| 314 | fwrite("0", 1, 1, fp); | 301 | fwrite("0", 1, 1, fp); |
| 315 | fclose(fp); | 302 | fclose(fp); |
| 316 | } | 303 | } |
| @@ -321,11 +308,11 @@ static void reset_max_latency(void) | |||
| 321 | char *path; | 308 | char *path; |
| 322 | 309 | ||
| 323 | /* reset the trace */ | 310 | /* reset the trace */ |
| 324 | path = get_tracing_file("tracing_max_latency"); | 311 | path = tracecmd_get_tracing_file("tracing_max_latency"); |
| 325 | fp = fopen(path, "w"); | 312 | fp = fopen(path, "w"); |
| 326 | if (!fp) | 313 | if (!fp) |
| 327 | die("writing to '%s'", path); | 314 | die("writing to '%s'", path); |
| 328 | put_tracing_file(path); | 315 | tracecmd_put_tracing_file(path); |
| 329 | fwrite("0", 1, 1, fp); | 316 | fwrite("0", 1, 1, fp); |
| 330 | fclose(fp); | 317 | fclose(fp); |
| 331 | } | 318 | } |
| @@ -336,7 +323,7 @@ static void update_ftrace_pid(const char *pid) | |||
| 336 | int ret; | 323 | int ret; |
| 337 | int fd; | 324 | int fd; |
| 338 | 325 | ||
| 339 | path = get_tracing_file("set_ftrace_pid"); | 326 | path = tracecmd_get_tracing_file("set_ftrace_pid"); |
| 340 | if (!path) | 327 | if (!path) |
| 341 | return; | 328 | return; |
| 342 | 329 | ||
| @@ -400,30 +387,6 @@ void run_cmd(int argc, char **argv) | |||
| 400 | waitpid(pid, &status, 0); | 387 | waitpid(pid, &status, 0); |
| 401 | } | 388 | } |
| 402 | 389 | ||
| 403 | static char *get_tracing_file(const char *name) | ||
| 404 | { | ||
| 405 | static const char *tracing; | ||
| 406 | char *file; | ||
| 407 | |||
| 408 | if (!tracing) { | ||
| 409 | tracing = tracecmd_find_tracing_dir(); | ||
| 410 | if (!tracing) | ||
| 411 | die("Can't find tracing dir"); | ||
| 412 | } | ||
| 413 | |||
| 414 | file = malloc_or_die(strlen(tracing) + strlen(name) + 2); | ||
| 415 | if (!file) | ||
| 416 | return NULL; | ||
| 417 | |||
| 418 | sprintf(file, "%s/%s", tracing, name); | ||
| 419 | return file; | ||
| 420 | } | ||
| 421 | |||
| 422 | static void put_tracing_file(char *file) | ||
| 423 | { | ||
| 424 | free(file); | ||
| 425 | } | ||
| 426 | |||
| 427 | static void show_events(void) | 390 | static void show_events(void) |
| 428 | { | 391 | { |
| 429 | char buf[BUFSIZ]; | 392 | char buf[BUFSIZ]; |
| @@ -431,11 +394,11 @@ static void show_events(void) | |||
| 431 | FILE *fp; | 394 | FILE *fp; |
| 432 | size_t n; | 395 | size_t n; |
| 433 | 396 | ||
| 434 | path = get_tracing_file("available_events"); | 397 | path = tracecmd_get_tracing_file("available_events"); |
| 435 | fp = fopen(path, "r"); | 398 | fp = fopen(path, "r"); |
| 436 | if (!fp) | 399 | if (!fp) |
| 437 | die("reading %s", path); | 400 | die("reading %s", path); |
| 438 | put_tracing_file(path); | 401 | tracecmd_put_tracing_file(path); |
| 439 | 402 | ||
| 440 | do { | 403 | do { |
| 441 | n = fread(buf, 1, BUFSIZ, fp); | 404 | n = fread(buf, 1, BUFSIZ, fp); |
| @@ -452,11 +415,11 @@ static void show_plugins(void) | |||
| 452 | FILE *fp; | 415 | FILE *fp; |
| 453 | size_t n; | 416 | size_t n; |
| 454 | 417 | ||
| 455 | path = get_tracing_file("available_tracers"); | 418 | path = tracecmd_get_tracing_file("available_tracers"); |
| 456 | fp = fopen(path, "r"); | 419 | fp = fopen(path, "r"); |
| 457 | if (!fp) | 420 | if (!fp) |
| 458 | die("reading %s", path); | 421 | die("reading %s", path); |
| 459 | put_tracing_file(path); | 422 | tracecmd_put_tracing_file(path); |
| 460 | 423 | ||
| 461 | do { | 424 | do { |
| 462 | n = fread(buf, 1, BUFSIZ, fp); | 425 | n = fread(buf, 1, BUFSIZ, fp); |
| @@ -471,11 +434,11 @@ static void set_plugin(const char *name) | |||
| 471 | FILE *fp; | 434 | FILE *fp; |
| 472 | char *path; | 435 | char *path; |
| 473 | 436 | ||
| 474 | path = get_tracing_file("current_tracer"); | 437 | path = tracecmd_get_tracing_file("current_tracer"); |
| 475 | fp = fopen(path, "w"); | 438 | fp = fopen(path, "w"); |
| 476 | if (!fp) | 439 | if (!fp) |
| 477 | die("writing to '%s'", path); | 440 | die("writing to '%s'", path); |
| 478 | put_tracing_file(path); | 441 | tracecmd_put_tracing_file(path); |
| 479 | 442 | ||
| 480 | fwrite(name, 1, strlen(name), fp); | 443 | fwrite(name, 1, strlen(name), fp); |
| 481 | fclose(fp); | 444 | fclose(fp); |
| @@ -488,11 +451,11 @@ static void show_options(void) | |||
| 488 | FILE *fp; | 451 | FILE *fp; |
| 489 | size_t n; | 452 | size_t n; |
| 490 | 453 | ||
| 491 | path = get_tracing_file("trace_options"); | 454 | path = tracecmd_get_tracing_file("trace_options"); |
| 492 | fp = fopen(path, "r"); | 455 | fp = fopen(path, "r"); |
| 493 | if (!fp) | 456 | if (!fp) |
| 494 | die("reading %s", path); | 457 | die("reading %s", path); |
| 495 | put_tracing_file(path); | 458 | tracecmd_put_tracing_file(path); |
| 496 | 459 | ||
| 497 | do { | 460 | do { |
| 498 | n = fread(buf, 1, BUFSIZ, fp); | 461 | n = fread(buf, 1, BUFSIZ, fp); |
| @@ -517,11 +480,11 @@ static void set_option(const char *option) | |||
| 517 | FILE *fp; | 480 | FILE *fp; |
| 518 | char *path; | 481 | char *path; |
| 519 | 482 | ||
| 520 | path = get_tracing_file("trace_options"); | 483 | path = tracecmd_get_tracing_file("trace_options"); |
| 521 | fp = fopen(path, "w"); | 484 | fp = fopen(path, "w"); |
| 522 | if (!fp) | 485 | if (!fp) |
| 523 | die("writing to '%s'", path); | 486 | die("writing to '%s'", path); |
| 524 | put_tracing_file(path); | 487 | tracecmd_put_tracing_file(path); |
| 525 | 488 | ||
| 526 | fwrite(option, 1, strlen(option), fp); | 489 | fwrite(option, 1, strlen(option), fp); |
| 527 | fclose(fp); | 490 | fclose(fp); |
| @@ -549,11 +512,11 @@ static void old_update_events(const char *name, char update) | |||
| 549 | name = "*:*"; | 512 | name = "*:*"; |
| 550 | 513 | ||
| 551 | /* need to use old way */ | 514 | /* need to use old way */ |
| 552 | path = get_tracing_file("set_event"); | 515 | path = tracecmd_get_tracing_file("set_event"); |
| 553 | fp = fopen(path, "w"); | 516 | fp = fopen(path, "w"); |
| 554 | if (!fp) | 517 | if (!fp) |
| 555 | die("opening '%s'", path); | 518 | die("opening '%s'", path); |
| 556 | put_tracing_file(path); | 519 | tracecmd_put_tracing_file(path); |
| 557 | 520 | ||
| 558 | /* Disable the event with "!" */ | 521 | /* Disable the event with "!" */ |
| 559 | if (update == '0') | 522 | if (update == '0') |
| @@ -612,13 +575,13 @@ static int update_glob(const char *name, const char *filter, | |||
| 612 | len = strlen(name) + strlen("events//enable") + 1; | 575 | len = strlen(name) + strlen("events//enable") + 1; |
| 613 | str = malloc_or_die(len); | 576 | str = malloc_or_die(len); |
| 614 | snprintf(str, len, "events/%s/enable", name); | 577 | snprintf(str, len, "events/%s/enable", name); |
| 615 | path = get_tracing_file(str); | 578 | path = tracecmd_get_tracing_file(str); |
| 616 | free(str); | 579 | free(str); |
| 617 | 580 | ||
| 618 | globbuf.gl_offs = 0; | 581 | globbuf.gl_offs = 0; |
| 619 | printf("path = %s\n", path); | 582 | printf("path = %s\n", path); |
| 620 | ret = glob(path, GLOB_ONLYDIR, NULL, &globbuf); | 583 | ret = glob(path, GLOB_ONLYDIR, NULL, &globbuf); |
| 621 | put_tracing_file(path); | 584 | tracecmd_put_tracing_file(path); |
| 622 | if (ret < 0) | 585 | if (ret < 0) |
| 623 | return 0; | 586 | return 0; |
| 624 | 587 | ||
| @@ -661,11 +624,11 @@ static void filter_all_systems(const char *filter) | |||
| 661 | int ret; | 624 | int ret; |
| 662 | int i; | 625 | int i; |
| 663 | 626 | ||
| 664 | path = get_tracing_file("events/*/filter"); | 627 | path = tracecmd_get_tracing_file("events/*/filter"); |
| 665 | 628 | ||
| 666 | globbuf.gl_offs = 0; | 629 | globbuf.gl_offs = 0; |
| 667 | ret = glob(path, 0, NULL, &globbuf); | 630 | ret = glob(path, 0, NULL, &globbuf); |
| 668 | put_tracing_file(path); | 631 | tracecmd_put_tracing_file(path); |
| 669 | if (ret < 0) | 632 | if (ret < 0) |
| 670 | die("No filters found"); | 633 | die("No filters found"); |
| 671 | 634 | ||
| @@ -690,12 +653,12 @@ static void update_event(const char *name, const char *filter, | |||
| 690 | int ret2; | 653 | int ret2; |
| 691 | 654 | ||
| 692 | /* Check if the kernel has the events/enable file */ | 655 | /* Check if the kernel has the events/enable file */ |
| 693 | path = get_tracing_file("events/enable"); | 656 | path = tracecmd_get_tracing_file("events/enable"); |
| 694 | ret = stat(path, &st); | 657 | ret = stat(path, &st); |
| 695 | if (ret < 0) { | 658 | if (ret < 0) { |
| 696 | if (filter_only) | 659 | if (filter_only) |
| 697 | return; | 660 | return; |
| 698 | put_tracing_file(path); | 661 | tracecmd_put_tracing_file(path); |
| 699 | /* old kernel */ | 662 | /* old kernel */ |
| 700 | old_update_events(name, update); | 663 | old_update_events(name, update); |
| 701 | return; | 664 | return; |
| @@ -714,14 +677,14 @@ static void update_event(const char *name, const char *filter, | |||
| 714 | filter_all_systems("0"); | 677 | filter_all_systems("0"); |
| 715 | 678 | ||
| 716 | if (filter_only) { | 679 | if (filter_only) { |
| 717 | put_tracing_file(path); | 680 | tracecmd_put_tracing_file(path); |
| 718 | return; | 681 | return; |
| 719 | } | 682 | } |
| 720 | 683 | ||
| 721 | fp = fopen(path, "w"); | 684 | fp = fopen(path, "w"); |
| 722 | if (!fp) | 685 | if (!fp) |
| 723 | die("writing to '%s'", path); | 686 | die("writing to '%s'", path); |
| 724 | put_tracing_file(path); | 687 | tracecmd_put_tracing_file(path); |
| 725 | ret = fwrite(&update, 1, 1, fp); | 688 | ret = fwrite(&update, 1, 1, fp); |
| 726 | fclose(fp); | 689 | fclose(fp); |
| 727 | if (ret < 0) | 690 | if (ret < 0) |
| @@ -741,7 +704,7 @@ static void update_event(const char *name, const char *filter, | |||
| 741 | if (!strlen(ptr) || strcmp(ptr, "*") == 0) { | 704 | if (!strlen(ptr) || strcmp(ptr, "*") == 0) { |
| 742 | ret = update_glob(str, filter, filter_only, update); | 705 | ret = update_glob(str, filter, filter_only, update); |
| 743 | free(str); | 706 | free(str); |
| 744 | put_tracing_file(path); | 707 | tracecmd_put_tracing_file(path); |
| 745 | if (!ret) | 708 | if (!ret) |
| 746 | goto fail; | 709 | goto fail; |
| 747 | return; | 710 | return; |
| @@ -786,9 +749,9 @@ static void check_tracing_enabled(void) | |||
| 786 | char *path; | 749 | char *path; |
| 787 | 750 | ||
| 788 | if (fd < 0) { | 751 | if (fd < 0) { |
| 789 | path = get_tracing_file("tracing_enabled"); | 752 | path = tracecmd_get_tracing_file("tracing_enabled"); |
| 790 | fd = open(path, O_WRONLY); | 753 | fd = open(path, O_WRONLY); |
| 791 | put_tracing_file(path); | 754 | tracecmd_put_tracing_file(path); |
| 792 | 755 | ||
| 793 | if (fd < 0) | 756 | if (fd < 0) |
| 794 | return; | 757 | return; |
| @@ -806,11 +769,11 @@ static int open_tracing_on(void) | |||
| 806 | if (fd >= 0) | 769 | if (fd >= 0) |
| 807 | return fd; | 770 | return fd; |
| 808 | 771 | ||
| 809 | path = get_tracing_file("tracing_on"); | 772 | path = tracecmd_get_tracing_file("tracing_on"); |
| 810 | fd = open(path, O_RDWR); | 773 | fd = open(path, O_RDWR); |
| 811 | if (fd < 0) | 774 | if (fd < 0) |
| 812 | die("opening '%s'", path); | 775 | die("opening '%s'", path); |
| 813 | put_tracing_file(path); | 776 | tracecmd_put_tracing_file(path); |
| 814 | tracing_on_fd = fd; | 777 | tracing_on_fd = fd; |
| 815 | 778 | ||
| 816 | return fd; | 779 | return fd; |
| @@ -893,7 +856,7 @@ static void update_filter(const char *event_name, const char *field, | |||
| 893 | strlen("events//filter") + 1); | 856 | strlen("events//filter") + 1); |
| 894 | sprintf(filter_name, "events/%s/filter", event_name); | 857 | sprintf(filter_name, "events/%s/filter", event_name); |
| 895 | 858 | ||
| 896 | path = get_tracing_file(filter_name); | 859 | path = tracecmd_get_tracing_file(filter_name); |
| 897 | free(filter_name); | 860 | free(filter_name); |
| 898 | 861 | ||
| 899 | /* Ignore if file does not exist */ | 862 | /* Ignore if file does not exist */ |
| @@ -929,7 +892,7 @@ static void update_filter(const char *event_name, const char *field, | |||
| 929 | free(filter); | 892 | free(filter); |
| 930 | 893 | ||
| 931 | out: | 894 | out: |
| 932 | put_tracing_file(path); | 895 | tracecmd_put_tracing_file(path); |
| 933 | } | 896 | } |
| 934 | 897 | ||
| 935 | static void update_pid_event_filters(const char *pid) | 898 | static void update_pid_event_filters(const char *pid) |
| @@ -1323,7 +1286,7 @@ static int trace_empty(void) | |||
| 1323 | * that is without a '#' the trace is not empty. | 1286 | * that is without a '#' the trace is not empty. |
| 1324 | * Otherwise it is. | 1287 | * Otherwise it is. |
| 1325 | */ | 1288 | */ |
| 1326 | path = get_tracing_file("trace"); | 1289 | path = tracecmd_get_tracing_file("trace"); |
| 1327 | fp = fopen(path, "r"); | 1290 | fp = fopen(path, "r"); |
| 1328 | if (!fp) | 1291 | if (!fp) |
| 1329 | die("reading '%s'", path); | 1292 | die("reading '%s'", path); |
| @@ -1336,7 +1299,7 @@ static int trace_empty(void) | |||
| 1336 | } | 1299 | } |
| 1337 | } while (line && n > 0); | 1300 | } while (line && n > 0); |
| 1338 | 1301 | ||
| 1339 | put_tracing_file(path); | 1302 | tracecmd_put_tracing_file(path); |
| 1340 | 1303 | ||
| 1341 | fclose(fp); | 1304 | fclose(fp); |
| 1342 | 1305 | ||
| @@ -1349,7 +1312,7 @@ static void write_func_file(const char *file, struct func_list **list) | |||
| 1349 | char *path; | 1312 | char *path; |
| 1350 | int fd; | 1313 | int fd; |
| 1351 | 1314 | ||
| 1352 | path = get_tracing_file(file); | 1315 | path = tracecmd_get_tracing_file(file); |
| 1353 | 1316 | ||
| 1354 | fd = open(path, O_WRONLY | O_TRUNC); | 1317 | fd = open(path, O_WRONLY | O_TRUNC); |
| 1355 | if (fd < 0) | 1318 | if (fd < 0) |
| @@ -1365,7 +1328,7 @@ static void write_func_file(const char *file, struct func_list **list) | |||
| 1365 | close(fd); | 1328 | close(fd); |
| 1366 | 1329 | ||
| 1367 | free: | 1330 | free: |
| 1368 | put_tracing_file(path); | 1331 | tracecmd_put_tracing_file(path); |
| 1369 | } | 1332 | } |
| 1370 | 1333 | ||
| 1371 | static void set_funcs(void) | 1334 | static void set_funcs(void) |
| @@ -1400,7 +1363,7 @@ void set_buffer_size(void) | |||
| 1400 | 1363 | ||
| 1401 | snprintf(buf, BUFSIZ, "%d", buffer_size); | 1364 | snprintf(buf, BUFSIZ, "%d", buffer_size); |
| 1402 | 1365 | ||
| 1403 | path = get_tracing_file("buffer_size_kb"); | 1366 | path = tracecmd_get_tracing_file("buffer_size_kb"); |
| 1404 | fd = open(path, O_WRONLY); | 1367 | fd = open(path, O_WRONLY); |
| 1405 | if (fd < 0) | 1368 | if (fd < 0) |
| 1406 | die("can't open %s", path); | 1369 | die("can't open %s", path); |
diff --git a/trace-util.c b/trace-util.c index 9e0ceca..970e6bc 100644 --- a/trace-util.c +++ b/trace-util.c | |||
| @@ -830,3 +830,27 @@ void tracecmd_unload_plugins(struct plugin_list *plugin_list) | |||
| 830 | free(list); | 830 | free(list); |
| 831 | } | 831 | } |
| 832 | } | 832 | } |
| 833 | |||
| 834 | char *tracecmd_get_tracing_file(const char *name) | ||
| 835 | { | ||
| 836 | static const char *tracing; | ||
| 837 | char *file; | ||
| 838 | |||
| 839 | if (!tracing) { | ||
| 840 | tracing = tracecmd_find_tracing_dir(); | ||
| 841 | if (!tracing) | ||
| 842 | die("Can't find tracing dir"); | ||
| 843 | } | ||
| 844 | |||
| 845 | file = malloc_or_die(strlen(tracing) + strlen(name) + 2); | ||
| 846 | if (!file) | ||
| 847 | return NULL; | ||
| 848 | |||
| 849 | sprintf(file, "%s/%s", tracing, name); | ||
| 850 | return file; | ||
| 851 | } | ||
| 852 | |||
| 853 | void tracecmd_put_tracing_file(char *name) | ||
| 854 | { | ||
| 855 | free(name); | ||
| 856 | } | ||
