Viewing file:      time.h (2.18 KB)      -rw-r--r-- Select action/file-type:    (+) |   (+) |   (+) | Code (+) | Session (+) |   (+) | SDB (+) |   (+) |   (+) |   (+) |   (+) |   (+) |
 
/*  * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved.  *  * Licensed under the Apache License 2.0 (the "License").  You may not use  * this file except in compliance with the License.  You can obtain a copy  * in the file LICENSE in the source distribution or at  * https://www.openssl.org/source/license.html  */
  #ifndef OSSL_INTERNAL_TIME_H # define OSSL_INTERNAL_TIME_H # pragma once
  # include <openssl/e_os2.h>     /* uint64_t */ # include "internal/e_os.h"     /* for struct timeval */ # include "internal/safe_math.h"
  /* The precision of times allows this many values per second */ # define OSSL_TIME_SECOND 1000000000
  /* Macro representing the most distant future time */ # define OSSL_TIME_INFINITY (~(OSSL_TIME)0)
  /* Macro that's guaranteed to be now or before */ # define OSSL_TIME_IMMEDIATE    0
  /*  * Internal type defining a time.  * The time datum is Unix's 1970 and at nanosecond precision, this gives  * a range of 584 years roughly.  */ typedef uint64_t OSSL_TIME;
  /* Get current time */ OSSL_TIME ossl_time_now(void);
  /* Convert time to timeval */ static ossl_unused ossl_inline void ossl_time_time_to_timeval(OSSL_TIME t, struct timeval *out) { #ifdef _WIN32     out->tv_sec = (long int)(t / OSSL_TIME_SECOND); #else     out->tv_sec = (time_t)(t / OSSL_TIME_SECOND); #endif     out->tv_usec = (t % OSSL_TIME_SECOND) / (OSSL_TIME_SECOND / 1000000); }
  /* Compare two time values, return -1 if less, 1 if greater and 0 if equal */ static ossl_unused ossl_inline int ossl_time_compare(OSSL_TIME a, OSSL_TIME b) {     if (a > b)         return 1;     if (a < b)         return -1;     return 0; }
  /*  * Arithmetic operations on times.  * These operations are saturating, in that an overflow or underflow returns  * the largest or smallest value respectively.  */ OSSL_SAFE_MATH_UNSIGNED(time, OSSL_TIME)
  static ossl_unused ossl_inline OSSL_TIME ossl_time_add(OSSL_TIME a, OSSL_TIME b) {     OSSL_TIME r;     int err = 0;
      r = safe_add_time(a, b, &err);     return err ? OSSL_TIME_INFINITY : r; }
  static ossl_unused ossl_inline OSSL_TIME ossl_time_subtract(OSSL_TIME a, OSSL_TIME b) {     OSSL_TIME r;     int err = 0;
      r = safe_sub_time(a, b, &err);     return err ? 0 : r; }
  #endif 
  |