X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Futils%2Futils.c;h=c31417efbbc2190c6055ab786853e5de3496c933;hp=0b9655247e81ba30604b88891e352ed553e960a5;hb=c8e51d1559c48a12f18053997bbcff0c162691c4;hpb=838193da4897e62cebf4ef2090ba7224cbdad1da diff --git a/tests/utils/utils.c b/tests/utils/utils.c index 0b9655247..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) @@ -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; +}