From 9a57f63e4add6de8469bcec43b7b003e424e4799 Mon Sep 17 00:00:00 2001 From: Jonathan Rajotte Date: Wed, 13 Feb 2019 21:22:06 -0500 Subject: [PATCH] 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 --- .../testapp/gen-ust-events/gen-ust-events.c | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) 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 3dc98a74d..c286b955c 100644 --- a/tests/utils/testapp/gen-ust-events/gen-ust-events.c +++ b/tests/utils/testapp/gen-ust-events/gen-ust-events.c @@ -106,6 +106,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} }; @@ -127,6 +129,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) { @@ -139,6 +145,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; @@ -214,9 +226,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); } -- 2.34.1