X-Git-Url: http://developer.intra2net.com/git/?p=libt2n;a=blobdiff_plain;f=src%2Fmonotonic_clock.cpp;fp=src%2Fmonotonic_clock.cpp;h=3b4e720f0fe543788d1771a8c317d9a6cea49be4;hp=0000000000000000000000000000000000000000;hb=0a531de652b3c0d1f3d7810f4f772d37b64c8a10;hpb=08059d7fb37e975616bac50945ba7b0d145c242e diff --git a/src/monotonic_clock.cpp b/src/monotonic_clock.cpp new file mode 100644 index 0000000..3b4e720 --- /dev/null +++ b/src/monotonic_clock.cpp @@ -0,0 +1,56 @@ +/* +Copyright (C) 2024 by Intra2net AG + +The software in this package is distributed under the GNU General +Public License version 2 (with a special exception described below). + +A copy of GNU General Public License (GPL) is included in this distribution, +in the file COPYING.GPL. + +As a special exception, if other files instantiate templates or use macros +or inline functions from this file, or you compile this file and link it +with other works to produce a work based on this file, this file +does not by itself cause the resulting work to be covered +by the GNU General Public License. + +However the source code for this file must still be made available +in accordance with section (3) of the GNU General Public License. + +This exception does not invalidate any other reasons why a work based +on this file might be covered by the GNU General Public License. +*/ + +#include + +#include "monotonic_clock.hxx" + +/** + * @brief fetches the value from the monotonic clock source. + * @param[out] seconds the seconds. + * @param[out] nano_seconds the nano seconds. + * @return @a true if the clock was successfully read. + */ +bool monotonic_clock_gettime(long int& seconds, long int& nano_seconds) +{ + struct timespec tp[1]; + int res= clock_gettime (CLOCK_MONOTONIC, tp); + if (0 == res) + { + seconds= tp->tv_sec; + nano_seconds= tp->tv_nsec; + } + return (res==0); +} + +/** + * @brief fetches the value from the monotonic clock source. + * @return the time since system start in seconds, 0 if read was unsuccessful + */ +int monotonic_clock_gettime_sec() +{ + long int seconds=0; + long int nano_seconds; + + monotonic_clock_gettime(seconds,nano_seconds); + return seconds; +}