aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsunliming <sunliming@kylinos.cn>2023-06-06 14:20:26 +0800
committerSteven Rostedt (Google) <rostedt@goodmis.org>2023-06-14 12:41:53 -0400
commit4b56c21b11dcd2c6e4c6ee81bde77bea05e64db0 (patch)
tree3add3df3c4100e6feb56aafa39c047ea23ce874c
parent3e7269dd5fd5e77c215829e80fc1f29c989c9c42 (diff)
downloadlinux-4b56c21b11dcd2c6e4c6ee81bde77bea05e64db0.tar.gz
selftests/user_events: Clear the events after perf self-test
When the self test is completed, perf self-test left the user events not to be cleared. Clear the events by unregister and delete the event. Link: https://lkml.kernel.org/r/20230606062027.1008398-4-sunliming@kylinos.cn Acked-by: Beau Belgrave <beaub@linux.microsoft.com> Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> Signed-off-by: sunliming <sunliming@kylinos.cn> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
-rw-r--r--tools/testing/selftests/user_events/perf_test.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/tools/testing/selftests/user_events/perf_test.c b/tools/testing/selftests/user_events/perf_test.c
index a070258d4449e..e97f24ab6e2f9 100644
--- a/tools/testing/selftests/user_events/perf_test.c
+++ b/tools/testing/selftests/user_events/perf_test.c
@@ -81,6 +81,32 @@ static int get_offset(void)
return offset;
}
+static int clear(int *check)
+{
+ struct user_unreg unreg = {0};
+
+ unreg.size = sizeof(unreg);
+ unreg.disable_bit = 31;
+ unreg.disable_addr = (__u64)check;
+
+ int fd = open(data_file, O_RDWR);
+
+ if (fd == -1)
+ return -1;
+
+ if (ioctl(fd, DIAG_IOCSUNREG, &unreg) == -1)
+ if (errno != ENOENT)
+ return -1;
+
+ if (ioctl(fd, DIAG_IOCSDEL, "__test_event") == -1)
+ if (errno != ENOENT)
+ return -1;
+
+ close(fd);
+
+ return 0;
+}
+
FIXTURE(user) {
int data_fd;
int check;
@@ -93,6 +119,9 @@ FIXTURE_SETUP(user) {
FIXTURE_TEARDOWN(user) {
close(self->data_fd);
+
+ if (clear(&self->check) != 0)
+ printf("WARNING: Clear didn't work!\n");
}
TEST_F(user, perf_write) {