X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Futils%2Futils.c;h=c31417efbbc2190c6055ab786853e5de3496c933;hp=b85f027e0b41364f5795dcf328710e33c9b16c6f;hb=c8e51d1559c48a12f18053997bbcff0c162691c4;hpb=395d6b02dda3db1acd08936f49c1dc8efc48e613 diff --git a/tests/utils/utils.c b/tests/utils/utils.c index b85f027e0..c31417efb 100644 --- a/tests/utils/utils.c +++ b/tests/utils/utils.c @@ -15,13 +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 + +#include "utils.h" static inline int64_t elapsed_time_ns(struct timespec *t1, struct timespec *t2) @@ -55,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; @@ -66,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; +}