X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Futils%2Futils.c;h=c31417efbbc2190c6055ab786853e5de3496c933;hp=7aa8667d4f4520891d4b5d013ae752641897dde8;hb=c8e51d1559c48a12f18053997bbcff0c162691c4;hpb=389fbf04b41e2002be44a1e3392bfade2f1deeef diff --git a/tests/utils/utils.c b/tests/utils/utils.c index 7aa8667d4..c31417efb 100644 --- a/tests/utils/utils.c +++ b/tests/utils/utils.c @@ -15,15 +15,21 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include -#include #include -#include -#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include -#define NSEC_PER_SEC 1000000000ULL -#define NSEC_PER_USEC 1000ULL +#include "utils.h" static inline int64_t elapsed_time_ns(struct timespec *t1, struct timespec *t2) @@ -57,7 +63,7 @@ int usleep_safe(useconds_t usec) goto end; } - ret = clock_gettime(CLOCK_MONOTONIC, &t2); + ret = lttng_clock_gettime(CLOCK_MONOTONIC, &t2); if (ret) { perror("clock_gettime"); goto end; @@ -68,3 +74,61 @@ int usleep_safe(useconds_t usec) end: return ret; } + +int create_file(const char *path) +{ + int ret; + + if (!path) { + return -1; + } + + ret = creat(path, S_IRWXU); + if (ret < 0) { + perror("creat"); + return -1; + } + + ret = close(ret); + if (ret < 0) { + perror("close"); + return -1; + } + + return 0; +} + +int wait_on_file(const char *path) +{ + int ret; + struct stat buf; + + if (!path) { + return -1; + } + + for (;;) { + ret = stat(path, &buf); + if (ret == -1 && errno == ENOENT) { + ret = poll(NULL, 0, 10); /* 10 ms delay */ + /* Should return 0 everytime */ + if (ret) { + if (ret < 0) { + perror("perror"); + } else { + fprintf(stderr, + "poll return value is larger than zero\n"); + } + return -1; + } + continue; /* retry */ + } + if (ret) { + perror("stat"); + return -1; + } + break; /* found */ + } + + return 0; +}