X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Futils%2Futils.c;h=d54c6cc99e668965d23349dc40ec11194cf41023;hp=b85f027e0b41364f5795dcf328710e33c9b16c6f;hb=352b58f55f53e7d11fb286ddc26a3bd0ecdd02f5;hpb=395d6b02dda3db1acd08936f49c1dc8efc48e613 diff --git a/tests/utils/utils.c b/tests/utils/utils.c index b85f027e0..d54c6cc99 100644 --- a/tests/utils/utils.c +++ b/tests/utils/utils.c @@ -1,27 +1,26 @@ /* - * Copyright (C) - 2015 Jérémie Galarneau + * Copyright (C) 2015 Jérémie Galarneau * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation; version 2.1 of the License. + * SPDX-License-Identifier: LGPL-2.1-only * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, write to the Free Software Foundation, - * 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 +54,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 +65,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; +}