From 6613108932473cadcc6c811082dc829db3b1fc47 Mon Sep 17 00:00:00 2001 From: Jonathan Rajotte Date: Wed, 13 Feb 2019 21:22:06 -0500 Subject: [PATCH 1/1] 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 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); } -- 2.34.1