X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Futils%2Futils.c;h=d54c6cc99e668965d23349dc40ec11194cf41023;hp=7aa8667d4f4520891d4b5d013ae752641897dde8;hb=352b58f55f53e7d11fb286ddc26a3bd0ecdd02f5;hpb=389fbf04b41e2002be44a1e3392bfade2f1deeef diff --git a/tests/utils/utils.c b/tests/utils/utils.c index 7aa8667d4..d54c6cc99 100644 --- a/tests/utils/utils.c +++ b/tests/utils/utils.c @@ -1,29 +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 -#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 +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; @@ -68,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; +}