1tm.h(3)                    Library Functions Manual                    tm.h(3)
2
3
4

NAME

6       tm.h - Время и таймеры
7
8

SYNOPSIS

10       #include <time.h>
11       #include 'bee2/defs.h'
12
13
14   Определения типов
15       typedef u32 tm_ticks_t
16           Число тактов таймера
17       typedef time_t tm_time_t
18           Время
19
20   Функции
21       tm_ticks_t tmTicks ()
22           Показания таймера
23       tm_ticks_t tmFreq ()
24           Частота таймера
25       size_t tmSpeed (size_t reps, tm_ticks_t ticks)
26           Скорость
27       tm_time_t tmTime ()
28           UNIX-время
29       tm_time_t tmTimeRound (tm_time_t t0, tm_time_t ts)
30           Округленное UNIX-время
31       bool_t tmDate (size_t *y, size_t *m, size_t *d)
32           Дата
33       bool_t tmDate2 (octet date[6])
34           Дата в формате YYMMDD.
35       bool_t tmDateIsValid (size_t y, size_t m, size_t d)
36           Корректная дата?
37       bool_t tmDateIsValid2 (const octet date[6])
38           Корректная дата в формате YYMMDD?
39

Подробное описание

Таймер

42       Функции tmFreq(), tmTicks() отвечают за работу с наиболее точным
43       таймером среди доступных. Показания выдаются в виде значения типа
44       tm_ticks_t.
45
46       Наиболее точным таймером на платформах x86, x64 является регистр RDTSC,
47       который обновляется с частотой процессора.
48
49       Таймер определяется в следующей очередности (до первого найденного): --
50       на платформах x86, x64 использовать регистр RDTSC; -- в среде Windows
51       использовать функции QueryPerformance[Counter|Frequency](); -- в среде
52       Unix использовать функции clock_get[time|res](); -- использовать
53       функцию clock() и константу CLOCK_PER_SEC (см. time.h).
54

Время

56       Системное время задается числом секунд, прошедших с полуночи 01 января
57       1970 года (1970-01-01T00:00:00Z в формате ISO 8601). Использованную
58       шкалу времени прнято называть UNIX-время. Начало отсчета -- старт 'эры
59       UNIX' (Unix Epoch).
60
61       Отметка времени представляется типом tm_time_t. Этот тип повторяет
62       системный тип time_t и наследует его неопределенность по разрядности и
63       знаковости.
64
65       Предупреждения
66           10 января 2004 счетчик секунд принял значение 2^30. 32-битовый
67           счетчик исчерпает себя 19 января 2038 года.
68

Дата

70       Дата задается тройкой (год y, месяц m, день месяца d).
71
72       Месяцы нумеруются от 1 (январь) до 12 (декабрь). Дни месяца -- от 1 до
73       28, 29, 30 или 31.
74
75       Прим.
76           Даты, в которых y < 1583, считаются некорректными (григорианский
77           календарь был введен в 1582 году).
78
79       Тройка кодируется либо тремя беззнаковыми целыми либо 6 октетами по
80       схеме YYMMDD. В последнем случае каждый октет представляет один
81       десятичный знак даты:
82
83       • первые два октета - год текущего (21-го века) века;
84
85       • следующие два октета - месяц;
86
87       • последние два октета - день месяцв.
88
89       Пример: {0x02, 0x02, 0x0, 0x7, 0x2, 0x9}.
90
91       Дата определяется с привязкой к текущему часовому поясу.
92
93       Прим.
94           Даты в формате YYMMDD используются в CV-сертификатах (см. btok.h).
95

Типы

97   tm_ticks_t

Функции

99   bool_t tmDate (size_t * y, size_t * m, size_t * d)
100       Определяются текущие (год y, месяц m, день месяца d). Каждый из
101       указателей y, m, d может быть нулевым, и тогда соответствующее поле
102       даты не возвращается.
103
104       Предусловие
105           Ненулевые указатели y, m, d корректны.
106
107       Возвращает
108           TRUE, если дата успешно определена, и FALSE в противном случае.
109
110       Аргументы
111           y год
112           m месяц
113           d день
114
115   bool_t tmDate2 (octet date[6])
116       Определяется текущая дата date в формате YYMMDD.
117
118       Предусловие
119           Указатель date корректен.
120
121       Возвращает
122           TRUE, если дата успешно определена, и FALSE в противном случае.
123
124       Аргументы
125           date дата
126
127   bool_t tmDateIsValid (size_t y, size_t m, size_t d)
128       Проверяется корректность даты (год y, месяц m, день месяца d).
129
130       Возвращает
131           Признак корректности.
132
133       Аргументы
134           y год
135           m месяц
136           d день
137
138   bool_t tmDateIsValid2 (const octet date[6])
139       Проверяется корректность даты date в формате YYMMDD.
140
141       Возвращает
142           Признак корректности.
143
144       Прим.
145           Проверяется в том числе корректность указателя date.
146
147       Аргументы
148           date дата
149
150   tm_ticks_t tmFreq ()
151       Возвращается число тактов, которое выполняет в секунду наиболее точный
152       из доступных таймеров.
153
154       Предупреждения
155           Замер частоты может занять время (в пределах 0.1 секунды).
156
157       Возвращает
158           Число тактов в секунду или 0 в случае ошибки.
159
160   size_t tmSpeed (size_t reps, tm_ticks_t ticks)
161       По числу reps экспериментов за ticks тактов определяется число
162       экспериментов, которое можно выполнить за 1 секунду.
163
164       Предупреждения
165           Расчеты ведутся в dword. Может быть потеря точности, связанная с
166           переполнением.
167
168       Возвращает
169           Число экспериментов в секунду или SIZE_MAX в случае ошибки.
170
171       Аргументы
172           reps число экспериментов
173           ticks число тактов
174
175   tm_ticks_t tmTicks ()
176       Возвращается число тактов, выполненных наиболее точным из доступных
177       таймеров. Таймер начинает работу до первого вызова функции. Показания
178       таймера монотонно увеличиваются вплоть до переполнения счетчика тактов.
179
180       Возвращает
181           Число тактов или 0 в случае ошибки.
182
183   tm_time_t tmTime ()
184       Возвращается число секунд, прошедших с момента 1970-01-01T00:00:00Z.
185
186       Возвращает
187           Число секунд или TIME_ERR в случае ошибки.
188
189   tm_time_t tmTimeRound (tm_time_t t0, tm_time_t ts)
190       Возвращается округленное UNIX-время (tmTime() - t0) / ts, где t0 ---
191       базовая отметка времени (начало отсчета), ts -- шаг времени.
192
193       Возвращает
194           Округленное UNIX-время или TIME_ERR в случае ошибки.
195
196       Прим.
197           Ошибками считаются следующие ситуации: ts == 0, tmTime() < t0.
198
199           Процедура округления соответствует RFC 6238.
200
201       Аргументы
202           t0 начало отсчета
203           ts шаг времени
204

Автор

206       Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.
207
208
209
210Библиотека Bee2                 Пт 23 Июн 2023                         tm.h(3)
Impressum