diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ipcpd/normal/dht.c | 1 | ||||
| -rw-r--r-- | src/ipcpd/normal/dir.c | 1 | ||||
| -rw-r--r-- | src/lib/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/lib/time_utils.c | 144 | ||||
| -rw-r--r-- | src/tools/oping/oping.c | 1 | ||||
| -rw-r--r-- | src/tools/time_utils.h | 75 | 
6 files changed, 60 insertions, 163 deletions
diff --git a/src/ipcpd/normal/dht.c b/src/ipcpd/normal/dht.c index 069b89d5..a6f1928b 100644 --- a/src/ipcpd/normal/dht.c +++ b/src/ipcpd/normal/dht.c @@ -48,6 +48,7 @@  #include <string.h>  #include <assert.h>  #include <inttypes.h> +#include <limits.h>  #include "kademlia.pb-c.h"  typedef KadMsg kad_msg_t; diff --git a/src/ipcpd/normal/dir.c b/src/ipcpd/normal/dir.c index 1c883974..345d220d 100644 --- a/src/ipcpd/normal/dir.c +++ b/src/ipcpd/normal/dir.c @@ -37,6 +37,7 @@  #include <string.h>  #include <assert.h>  #include <inttypes.h> +#include <limits.h>  #define KAD_B (hash_len(ipcpi.dir_hash_algo) * CHAR_BIT) diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index 973c2458..e7e07802 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -206,7 +206,6 @@ set(SOURCE_FILES_COMMON    shm_rbuff.c    shm_rdrbuff.c    sockets.c -  time_utils.c    tpm.c    utils.c  ) diff --git a/src/lib/time_utils.c b/src/lib/time_utils.c deleted file mode 100644 index 0701e2d3..00000000 --- a/src/lib/time_utils.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Ouroboros - Copyright (C) 2016 - 2018 - * - * Time utilities - * - *    Dimitri Staessens <dimitri.staessens@ugent.be> - *    Sander Vrijders   <sander.vrijders@ugent.be> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * version 2.1 as published by the Free Software Foundation. - * - * 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., http://www.fsf.org/about/contact/. - */ - -#define _POSIX_C_SOURCE 199309L - -#include <ouroboros/time_utils.h> -#include <stddef.h> - -/* functions for timespecs */ - -/* add intv to t and store it in res*/ -int ts_add(const struct timespec * t, -           const struct timespec * intv, -           struct timespec *       res) -{ -        time_t nanos = 0; - -        if (t == NULL || intv == NULL || res == NULL) -                return -1; - -        nanos = t->tv_nsec + intv->tv_nsec; - -        res->tv_sec = t->tv_sec + intv->tv_sec; -        while (nanos >= BILLION) { -                nanos -= BILLION; -                ++(res->tv_sec); -        } - -        res->tv_nsec = nanos; - -        return 0; -} - -/* subtract intv from t and stores it in res */ -int ts_diff(const struct timespec * t, -            const struct timespec * intv, -            struct timespec *       res) -{ -        time_t nanos = 0; - -        if (t == NULL || intv == NULL || res == NULL) -                return -1; - -        nanos = t->tv_nsec - intv->tv_nsec; - -        res->tv_sec = t->tv_sec - intv->tv_sec; -        while (nanos < 0) { -                nanos += BILLION; -                --(res->tv_sec); -        } -        res->tv_nsec = nanos; - -        return 0; -} - -/* functions for timevals */ - -/* add intv to t and store it in res*/ -int tv_add(const struct timeval * t, -           const struct timeval * intv, -           struct timeval *       res) -{ -        time_t micros = 0; - -        if (t == NULL || intv == NULL || res == NULL) -                return -1; - -        micros = t->tv_usec + intv->tv_usec; - -        res->tv_sec = t->tv_sec + intv->tv_sec; -        while (micros >= MILLION) { -                micros -= MILLION; -                ++(res->tv_sec); -        } -        res->tv_usec = micros; - -        return 0; -} - -/* subtract intv from t and stores it in res */ -int tv_diff(const struct timeval * t, -            const struct timeval * intv, -            struct timeval       * res) -{ -        time_t micros = 0; - -        if (t == NULL || intv == NULL || res == NULL) -                return -1; - -        micros = t->tv_usec - intv->tv_usec; - -        res->tv_sec = t->tv_sec - intv->tv_sec; -        while (micros < 0) { -                micros += MILLION; -                --(res->tv_sec); -        } -        res->tv_usec = micros; - -        return 0; -} - -int tv_to_ts(const struct timeval * src, -             struct timespec *      dst) -{ -        if (src == NULL || dst == NULL) -                return -1; - -        dst->tv_sec  = src->tv_sec; -        dst->tv_nsec = src->tv_usec * 1000L; - -        return 0; -} - -/* copying a timespec into a timeval (loss of resolution) */ -int ts_to_tv(const struct timespec * src, -             struct timeval *        dst) -{ -        if (src == NULL || dst == NULL) -                return -1; - -        dst->tv_sec  = src->tv_sec; -        dst->tv_usec = src->tv_nsec / 1000L; - -        return 0; -} diff --git a/src/tools/oping/oping.c b/src/tools/oping/oping.c index 18801c2d..e3e9116f 100644 --- a/src/tools/oping/oping.c +++ b/src/tools/oping/oping.c @@ -46,6 +46,7 @@  #include "time_utils.h" +#include <limits.h>  #include <stdio.h>  #include <string.h>  #include <pthread.h> diff --git a/src/tools/time_utils.h b/src/tools/time_utils.h index c9760a8b..f4f561bd 100644 --- a/src/tools/time_utils.h +++ b/src/tools/time_utils.h @@ -35,7 +35,6 @@   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED   * OF THE POSSIBILITY OF SUCH DAMAGE.   */ -  #ifndef OUROBOROS_TOOLS_TIME_UTILS_H  #define OUROBOROS_TOOLS_TIME_UTILS_H @@ -52,7 +51,6 @@  #include <time.h>  #include <sys/time.h> -#include <limits.h> /* LONG_MAX */  /* functions for timespecs */  #define ts_diff_ns(t0, tx) (((tx)->tv_sec - (t0)->tv_sec) * BILLION     \ @@ -69,29 +67,70 @@                              + ((tx)->tv_usec - (t0)->tv_usec) / MILLION)  /* functions for timespecs */ -int ts_add(const struct timespec * t, -           const struct timespec * intv, -           struct timespec *       res); -int ts_diff(const struct timespec * t, -            const struct timespec * intv, -            struct timespec *       res); +#define ts_add(t, intv, res)                                    \ +        do {                                                    \ +                time_t nanos = 0;                               \ +                nanos = (t)->tv_nsec + (intv)->tv_nsec;         \ +                (res)->tv_sec = (t)->tv_sec + (intv)->tv_sec;   \ +                while (nanos >= BILLION) {                      \ +                        nanos -= BILLION;                       \ +                        ++((res)->tv_sec);                      \ +                }                                               \ +                (res)->tv_nsec = nanos;                         \ +        } while (0); + +#define ts_diff(t, intv, res)                                   \ +        do {                                                    \ +                time_t nanos = 0;                               \ +                nanos = (t)->tv_nsec - (intv)->tv_nsec;         \ +                (res)->tv_sec = (t)->tv_sec - (intv)->tv_sec;   \ +                while (nanos < 0) {                             \ +                        nanos += BILLION;                       \ +                        --((res)->tv_sec);                      \ +                }                                               \ +                (res)->tv_nsec = nanos;                         \ +        } while (0);  /* functions for timevals */ -int tv_add(const struct timeval * t, -           const struct timeval * intv, -           struct timeval *       res); -int tv_diff(const struct timeval * t, -            const struct timeval * intv, -            struct timeval *       res); +#define tv_add(t, intv, res)                                    \ +        do {                                                    \ +                time_t micros = 0;                              \ +                nanos = (t)->tv_usec + (intv)->tv_usec;         \ +                (res)->tv_sec = (t)->tv_sec + (intv)->tv_sec;   \ +                while (micros >= MILLION) {                     \ +                        micros -= MILLION;                      \ +                        ++((res)->tv_sec);                      \ +                }                                               \ +                (res)->tv_nsec = nanos;                         \ +        } while (0); + +#define tv_diff(t, intv, res)                                   \ +        do {                                                    \ +                time_t micros = 0;                              \ +                micros = (t)->tv_usec - (intv)->tv_usec;        \ +                (res)->tv_sec = (t)->tv_sec - (intv)->tv_sec;   \ +                while (micros < 0) {                            \ +                        micros += MILLION;                      \ +                        --((res)->tv_sec);                      \ +                }                                               \ +                (res)->tv_usec = micros;                        \ +        } while (0); +  /* copying a timeval into a timespec */ -int tv_to_ts(const struct timeval * src, -             struct timespec *      dst); +#define tv_to_ts(tv, ts)                                \ +        do {                                            \ +                (ts)->tv_sec  = (tv)->tv_sec;           \ +                (ts)->tv_nsec = (tv)->tv_usec * 1000L;  \ +        } while (0);  /* copying a timespec into a timeval (loss of resolution) */ -int ts_to_tv(const struct timespec * src, -             struct timeval *        dst); +#define ts_to_tv(ts, tv)                                \ +        do {                                            \ +                (tv)->tv_sec  = (ts)->tv_sec;           \ +                (tv)->tv_usec = (ts)->tv_nsec / 1000L;  \ +        } while (0);  #endif /* OUROBOROS_TOOLS_TIME_UTILS_H */  | 
