tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

prinrval.h (5339B)


      1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this
      4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      5 
      6 /*
      7 ** File:        prinrval.h
      8 ** Description: API to interval timing functions of NSPR.
      9 **
     10 **
     11 ** NSPR provides interval times that are independent of network time
     12 ** of day values. Interval times are (in theory) accurate regardless
     13 ** of host processing requirements and also very cheap to acquire. It
     14 ** is expected that getting an interval time while in a synchronized
     15 ** function (holding one's lock).
     16 **/
     17 
     18 #if !defined(prinrval_h)
     19 #define prinrval_h
     20 
     21 #include "prtypes.h"
     22 
     23 PR_BEGIN_EXTERN_C
     24 
     25 /**********************************************************************/
     26 /************************* TYPES AND CONSTANTS ************************/
     27 /**********************************************************************/
     28 
     29 typedef PRUint32 PRIntervalTime;
     30 
     31 /***********************************************************************
     32 ** DEFINES:     PR_INTERVAL_MIN
     33 **              PR_INTERVAL_MAX
     34 ** DESCRIPTION:
     35 **  These two constants define the range (in ticks / second) of the
     36 **  platform dependent type, PRIntervalTime. These constants bound both
     37 **  the period and the resolution of a PRIntervalTime.
     38 ***********************************************************************/
     39 #define PR_INTERVAL_MIN 1000UL
     40 #define PR_INTERVAL_MAX 100000UL
     41 
     42 /***********************************************************************
     43 ** DEFINES:     PR_INTERVAL_NO_WAIT
     44 **              PR_INTERVAL_NO_TIMEOUT
     45 ** DESCRIPTION:
     46 **  Two reserved constants are defined in the PRIntervalTime namespace.
     47 **  They are used to indicate that the process should wait no time (return
     48 **  immediately) or wait forever (never time out), respectively.
     49 **  Note: PR_INTERVAL_NO_TIMEOUT passed as input to PR_Connect is
     50 **  interpreted as use the OS's connect timeout.
     51 **
     52 ***********************************************************************/
     53 #define PR_INTERVAL_NO_WAIT 0UL
     54 #define PR_INTERVAL_NO_TIMEOUT 0xffffffffUL
     55 
     56 /**********************************************************************/
     57 /****************************** FUNCTIONS *****************************/
     58 /**********************************************************************/
     59 
     60 /***********************************************************************
     61 ** FUNCTION:    PR_IntervalNow
     62 ** DESCRIPTION:
     63 **  Return the value of NSPR's free running interval timer. That timer
     64 **  can be used to establish epochs and determine intervals (be computing
     65 **  the difference between two times).
     66 ** INPUTS:      void
     67 ** OUTPUTS:     void
     68 ** RETURN:      PRIntervalTime
     69 **
     70 ** SIDE EFFECTS:
     71 **  None
     72 ** RESTRICTIONS:
     73 **  The units of PRIntervalTime are platform dependent. They are chosen
     74 **  such that they are appropriate for the host OS, yet provide sufficient
     75 **  resolution and period to be useful to clients.
     76 ** MEMORY:      N/A
     77 ** ALGORITHM:   Platform dependent
     78 ***********************************************************************/
     79 NSPR_API(PRIntervalTime) PR_IntervalNow(void);
     80 
     81 /***********************************************************************
     82 ** FUNCTION:    PR_TicksPerSecond
     83 ** DESCRIPTION:
     84 **  Return the number of ticks per second for PR_IntervalNow's clock.
     85 **  The value will be in the range [PR_INTERVAL_MIN..PR_INTERVAL_MAX].
     86 ** INPUTS:      void
     87 ** OUTPUTS:     void
     88 ** RETURN:      PRUint32
     89 **
     90 ** SIDE EFFECTS:
     91 **  None
     92 ** RESTRICTIONS:
     93 **  None
     94 ** MEMORY:      N/A
     95 ** ALGORITHM:   N/A
     96 ***********************************************************************/
     97 NSPR_API(PRUint32) PR_TicksPerSecond(void);
     98 
     99 /***********************************************************************
    100 ** FUNCTION:    PR_SecondsToInterval
    101 **              PR_MillisecondsToInterval
    102 **              PR_MicrosecondsToInterval
    103 ** DESCRIPTION:
    104 **  Convert standard clock units to platform dependent intervals.
    105 ** INPUTS:      PRUint32
    106 ** OUTPUTS:     void
    107 ** RETURN:      PRIntervalTime
    108 **
    109 ** SIDE EFFECTS:
    110 **  None
    111 ** RESTRICTIONS:
    112 **  Conversion may cause overflow, which is not reported.
    113 ** MEMORY:      N/A
    114 ** ALGORITHM:   N/A
    115 ***********************************************************************/
    116 NSPR_API(PRIntervalTime) PR_SecondsToInterval(PRUint32 seconds);
    117 NSPR_API(PRIntervalTime) PR_MillisecondsToInterval(PRUint32 milli);
    118 NSPR_API(PRIntervalTime) PR_MicrosecondsToInterval(PRUint32 micro);
    119 
    120 /***********************************************************************
    121 ** FUNCTION:    PR_IntervalToSeconds
    122 **              PR_IntervalToMilliseconds
    123 **              PR_IntervalToMicroseconds
    124 ** DESCRIPTION:
    125 **  Convert platform dependent intervals to standard clock units.
    126 ** INPUTS:      PRIntervalTime
    127 ** OUTPUTS:     void
    128 ** RETURN:      PRUint32
    129 **
    130 ** SIDE EFFECTS:
    131 **  None
    132 ** RESTRICTIONS:
    133 **  Conversion may cause overflow, which is not reported.
    134 ** MEMORY:      N/A
    135 ** ALGORITHM:   N/A
    136 ***********************************************************************/
    137 NSPR_API(PRUint32) PR_IntervalToSeconds(PRIntervalTime ticks);
    138 NSPR_API(PRUint32) PR_IntervalToMilliseconds(PRIntervalTime ticks);
    139 NSPR_API(PRUint32) PR_IntervalToMicroseconds(PRIntervalTime ticks);
    140 
    141 PR_END_EXTERN_C
    142 
    143 
    144 #endif /* !defined(prinrval_h) */
    145 
    146 /* prinrval.h */