| OLD | NEW |
| (Empty) |
| 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 */ | |
| OLD | NEW |