From: Jérémie Galarneau Date: Thu, 13 Dec 2018 22:06:29 +0000 (-0500) Subject: Move time utils to their own time.c file X-Git-Tag: v2.11.0-rc2~96 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=b74bc1d69d1bffb5dfd4a9967fbd88af83302bf0;p=lttng-tools.git Move time utils to their own time.c file --- diff --git a/src/common/Makefile.am b/src/common/Makefile.am index 1824fe46d..16e9e548b 100644 --- a/src/common/Makefile.am +++ b/src/common/Makefile.am @@ -27,7 +27,7 @@ libcommon_la_SOURCES = error.h error.c utils.c utils.h runas.h runas.c \ buffer-view.h buffer-view.c \ location.c \ waiter.h waiter.c \ - userspace-probe.c event.c + userspace-probe.c event.c time.c if HAVE_ELF_H libcommon_la_SOURCES += lttng-elf.h lttng-elf.c diff --git a/src/common/time.c b/src/common/time.c new file mode 100644 index 000000000..5c5594584 --- /dev/null +++ b/src/common/time.c @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2013 - Jérémie Galarneau + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License, version 2 only, as + * published by the Free Software Foundation. + * + * This program 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 General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program; 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 + +LTTNG_HIDDEN +int timespec_to_ms(struct timespec ts, unsigned long *ms) +{ + unsigned long res, remain_ms; + + if (ts.tv_sec > ULONG_MAX / MSEC_PER_SEC) { + errno = EOVERFLOW; + return -1; /* multiplication overflow */ + } + res = ts.tv_sec * MSEC_PER_SEC; + remain_ms = ULONG_MAX - res; + if (ts.tv_nsec / NSEC_PER_MSEC > remain_ms) { + errno = EOVERFLOW; + return -1; /* addition overflow */ + } + res += ts.tv_nsec / NSEC_PER_MSEC; + *ms = res; + return 0; +} + +LTTNG_HIDDEN +struct timespec timespec_abs_diff(struct timespec t1, struct timespec t2) +{ + uint64_t ts1 = (uint64_t) t1.tv_sec * (uint64_t) NSEC_PER_SEC + + (uint64_t) t1.tv_nsec; + uint64_t ts2 = (uint64_t) t2.tv_sec * (uint64_t) NSEC_PER_SEC + + (uint64_t) t2.tv_nsec; + uint64_t diff = max(ts1, ts2) - min(ts1, ts2); + struct timespec res; + + res.tv_sec = diff / (uint64_t) NSEC_PER_SEC; + res.tv_nsec = diff % (uint64_t) NSEC_PER_SEC; + return res; +} diff --git a/src/common/utils.c b/src/common/utils.c index 08139e5e2..3dc2d9297 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -1646,38 +1646,3 @@ int utils_show_help(int section, const char *page_name, end: return ret; } - -LTTNG_HIDDEN -int timespec_to_ms(struct timespec ts, unsigned long *ms) -{ - unsigned long res, remain_ms; - - if (ts.tv_sec > ULONG_MAX / MSEC_PER_SEC) { - errno = EOVERFLOW; - return -1; /* multiplication overflow */ - } - res = ts.tv_sec * MSEC_PER_SEC; - remain_ms = ULONG_MAX - res; - if (ts.tv_nsec / NSEC_PER_MSEC > remain_ms) { - errno = EOVERFLOW; - return -1; /* addition overflow */ - } - res += ts.tv_nsec / NSEC_PER_MSEC; - *ms = res; - return 0; -} - -LTTNG_HIDDEN -struct timespec timespec_abs_diff(struct timespec t1, struct timespec t2) -{ - uint64_t ts1 = (uint64_t) t1.tv_sec * (uint64_t) NSEC_PER_SEC + - (uint64_t) t1.tv_nsec; - uint64_t ts2 = (uint64_t) t2.tv_sec * (uint64_t) NSEC_PER_SEC + - (uint64_t) t2.tv_nsec; - uint64_t diff = max(ts1, ts2) - min(ts1, ts2); - struct timespec res; - - res.tv_sec = diff / (uint64_t) NSEC_PER_SEC; - res.tv_nsec = diff % (uint64_t) NSEC_PER_SEC; - return res; -} diff --git a/tests/unit/Makefile.am b/tests/unit/Makefile.am index b2804f697..024ecc026 100644 --- a/tests/unit/Makefile.am +++ b/tests/unit/Makefile.am @@ -126,10 +126,8 @@ endif KERN_DATA_TRACE=$(top_builddir)/src/bin/lttng-sessiond/trace-kernel.$(OBJEXT) \ $(top_builddir)/src/bin/lttng-sessiond/consumer.$(OBJEXT) \ $(top_builddir)/src/bin/lttng-sessiond/utils.$(OBJEXT) \ - $(top_builddir)/src/common/libcommon.la \ $(top_builddir)/src/common/health/libhealth.la \ $(top_builddir)/src/bin/lttng-sessiond/notification-thread-commands.$(OBJEXT) \ - $(top_builddir)/src/common/sessiond-comm/libsessiond-comm.la \ $(LIBLTTNG_CTL) test_kernel_data_SOURCES = test_kernel_data.c