File: interval_timing.rst

package info (click to toggle)
thunderbird 1%3A115.16.0esr-1~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 3,476,252 kB
  • sloc: cpp: 6,972,150; javascript: 5,209,211; ansic: 3,507,222; python: 1,137,609; asm: 432,531; xml: 205,149; java: 175,761; sh: 116,485; makefile: 22,152; perl: 13,971; objc: 12,561; yacc: 4,583; pascal: 2,840; lex: 1,720; ruby: 1,075; exp: 762; sql: 666; awk: 580; php: 436; lisp: 430; sed: 70; csh: 10
file content (72 lines) | stat: -rw-r--r-- 2,801 bytes parent folder | download | duplicates (18)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
NSPR defines a platform-dependent type, :ref:`PRIntervalTime`, for timing
intervals of fewer than approximately 6 hours. This chapter describes
:ref:`PRIntervalTime` and the functions that allow you to use it for timing
purposes:

-  `Interval Time Type and
   Constants <#Interval_Time_Type_and_Constants>`__
-  `Interval Functions <#Interval_Functions>`__

.. _Interval_Time_Type_and_Constants:

Interval Time Type and Constants
--------------------------------

All timed functions in NSPR require a parameter that depicts the amount
of time allowed to elapse before the operation is declared failed. The
type of such arguments is :ref:`PRIntervalTime`. Such parameters are common
in NSPR functions such as those used for I/O operations and operations
on condition variables.

NSPR 2.0 provides interval times that are efficient in terms of
performance and storage requirements. Conceptually, they are based on
free-running counters that increment at a fixed rate without possibility
of outside influence (as might be observed if one was using a
time-of-day clock that gets reset due to some administrative action).
The counters have no fixed epoch and have a finite period. To make use
of these counters, the application must declare a point in time, the
epoch, and an amount of time elapsed since that **epoch**, the
**interval**. In almost all cases the epoch is defined as the value of
the interval timer at the time it was sampled.

 - :ref:`PRIntervalTime`

.. _Interval_Functions:

Interval Functions
------------------

Interval timing functions are divided into three groups:

-  `Getting the Current Interval and Ticks Per
   Second <#Getting_the_Current_Interval_and_Ticks_Per_Second>`__
-  `Converting Standard Clock Units to Platform-Dependent
   Intervals <#Converting_Standard_Clock_Units_to_Platform-Dependent_Intervals>`__
-  `Converting Platform-Dependent Intervals to Standard Clock
   Units <#Converting_Platform-Dependent_Intervals_to_Standard_Clock_Units>`__

.. _Getting_the_Current_Interval_and_Ticks_Per_Second:

Getting the Current Interval and Ticks Per Second
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 - :ref:`PR_IntervalNow`
 - :ref:`PR_TicksPerSecond`

.. _Converting_Standard_Clock_Units_to_Platform-Dependent_Intervals:

Converting Standard Clock Units to Platform-Dependent Intervals
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 - :ref:`PR_SecondsToInterval`
 - :ref:`PR_MillisecondsToInterval`
 - :ref:`PR_MicrosecondsToInterval`

.. _Converting_Platform-Dependent_Intervals_to_Standard_Clock_Units:

Converting Platform-Dependent Intervals to Standard Clock Units
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 - :ref:`PR_IntervalToSeconds`
 - :ref:`PR_IntervalToMilliseconds`
 - :ref:`PR_IntervalToMicroseconds`