From: Jonathan Rajotte Date: Thu, 14 Feb 2019 02:22:06 +0000 (-0500) Subject: Gen-ust-events: add touch and wait sync points before exit. X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=commitdiff_plain;h=6613108932473cadcc6c811082dc829db3b1fc47;hp=503315ec95686c3b17251d70c632383167320ccc Gen-ust-events: add touch and wait sync points before exit. Allows an app to linger until the wait file is created and signals that the app is just before the exit. This is mostly useful for per-pid tracing where trace buffers are cleaned on application teardown. Signed-off-by: Jonathan Rajotte --- diff --git a/tests/utils/testapp/gen-ust-events/gen-ust-events.c b/tests/utils/testapp/gen-ust-events/gen-ust-events.c index e2f612678..018191d81 100644 --- a/tests/utils/testapp/gen-ust-events/gen-ust-events.c +++ b/tests/utils/testapp/gen-ust-events/gen-ust-events.c @@ -46,6 +46,8 @@ static struct option long_options[] = {"sync-after-first-event", required_argument, 0, 'a'}, {"sync-before-last-event", required_argument, 0, 'b'}, {"sync-before-last-event-touch", required_argument, 0, 'c'}, + {"sync-before-exit", required_argument, 0, 'd'}, + {"sync-before-exit-touch", required_argument, 0, 'e'}, {0, 0, 0, 0} }; @@ -67,6 +69,10 @@ int main(int argc, char **argv) * generated. */ char *before_last_event_file_path_touch = NULL; + /* Touch file when we are exiting */ + char *before_exit_file_path_touch = NULL; + /* Wait on file before exiting */ + char *before_exit_file_path = NULL; while((option_char = getopt_long(argc, argv, "i:w:a:b:c:d:", long_options, &option_index)) != -1) { switch (option_char) { @@ -79,6 +85,12 @@ int main(int argc, char **argv) case 'c': before_last_event_file_path_touch = strdup(optarg); break; + case 'd': + before_exit_file_path = strdup(optarg); + break; + case 'e': + before_exit_file_path_touch = strdup(optarg); + break; case 'i': nr_iter = atoi(optarg); break; @@ -154,9 +166,23 @@ int main(int argc, char **argv) } } + if (before_exit_file_path_touch) { + ret = create_file(before_exit_file_path_touch); + if (ret != 0) { + goto end; + } + } + if (before_exit_file_path) { + ret = wait_on_file(before_exit_file_path); + if (ret != 0) { + goto end; + } + } end: free(after_first_event_file_path); free(before_last_event_file_path); free(before_last_event_file_path_touch); + free(before_exit_file_path); + free(before_exit_file_path_touch); exit(!ret ? EXIT_SUCCESS : EXIT_FAILURE); }