diff options
Diffstat (limited to 'src/kernel/tests/lib/tst_safe_timerfd.c')
-rw-r--r-- | src/kernel/tests/lib/tst_safe_timerfd.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/kernel/tests/lib/tst_safe_timerfd.c b/src/kernel/tests/lib/tst_safe_timerfd.c new file mode 100644 index 0000000..ffe7b2e --- /dev/null +++ b/src/kernel/tests/lib/tst_safe_timerfd.c @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) 2020 Petr Vorel <pvorel@suse.cz> + */ + +#include "tst_safe_timerfd.h" +#include "lapi/timerfd.h" +#include "tst_clocks.h" +#define TST_NO_DEFAULT_MAIN +#include "tst_test.h" + +#define TTYPE (errno == ENOTSUP ? TCONF : TBROK) + +int safe_timerfd_create(const char *file, const int lineno, + int clockid, int flags) +{ + int fd; + + fd = timerfd_create(clockid, flags); + if (fd < 0) { + tst_brk(TTYPE | TERRNO, "%s:%d timerfd_create(%s) failed", + file, lineno, tst_clock_name(clockid)); + } + + return fd; +} + +int safe_timerfd_gettime(const char *file, const int lineno, + int fd, struct itimerspec *curr_value) +{ + int rval; + + rval = timerfd_gettime(fd, curr_value); + if (rval != 0) { + tst_brk(TTYPE | TERRNO, "%s:%d timerfd_gettime() failed", + file, lineno); + } + + return rval; +} + +int safe_timerfd_settime(const char *file, const int lineno, + int fd, int flags, + const struct itimerspec *new_value, + struct itimerspec *old_value) +{ + int rval; + + rval = timerfd_settime(fd, flags, new_value, old_value); + if (rval != 0) { + tst_brk(TTYPE | TERRNO, "%s:%d timerfd_settime() failed", + file, lineno); + } + + return rval; +} |