picox
0.1
|
時間を扱うための関数等 [詳解]
![]() |
データ構造 | |
struct | XTimeVal |
高精度のシステム時刻を格納するための型です [詳解] | |
マクロ定義 | |
#define | X_TICKS_FOREVER ((XTicks)-1) |
待ち関数で永久待ちを表す特殊値です [詳解] | |
#define | X_TICKS_PER_SEC X_CONF_TICKS_PER_SEC |
型定義 | |
typedef int32_t | XMSeconds |
ミリ秒単位の時間を格納する型です | |
typedef int32_t | XSeconds |
秒単位の時間を格納する型です [詳解] | |
typedef int32_t | XTicks |
システムチックを格納する型です | |
typedef uint32_t | XTime |
time_tの代替をするシステム時刻を格納するための型です [詳解] | |
typedef int32_t | XUSeconds |
マイクロ秒単位の時間を格納する型です | |
関数 | |
static XTimeVal | x_gettimeofday2 (void) |
現在時刻を返します | |
変数 | |
XTime | tv_sec |
int32_t | tv_usec |
user_porting_functions | |
XTicks | x_port_ticks_now (void) |
現在のチック時間を返します | |
int | x_port_gettimeofday (XTimeVal *tv, void *tz_dammy) |
現在時刻を返します [詳解] | |
void | x_port_msleep (XMSeconds msec) |
ミリ秒単位のスリープを行います [詳解] | |
void | x_port_usleep (XUSeconds usec) |
マイクロ秒単位のスリープを行います [詳解] | |
void | x_port_mdelay (XMSeconds msec) |
ミリ秒単位のディレイを行います [詳解] | |
void | x_port_udelay (XUSeconds usec) |
マイクロ秒単位のディレイを行います [詳解] | |
#define | x_ticks_now x_port_ticks_now |
#define | x_gettimeofday x_port_gettimeofday |
#define | x_msleep x_port_msleep |
#define | x_usleep x_port_usleep |
#define | x_mdelay x_port_mdelay |
#define | x_udelay x_port_mdelay |
time_conversions | |
X秒からチックへの変換の際はチック単位に切り上げし、チックからX秒への変換は切 り下げます。 時間待ちが最終的にはチック単位で行われるため、指定時間以上の待ち時間を確保す ることがこの変換規則の目的です。 | |
static XTicks | x_msec_to_ticks (XMSeconds msec) |
ミリ秒をチックに変換した値を返します | |
static XTicks | x_usec_to_ticks (XUSeconds usec) |
マイクロ秒をチックに変換した値を返します | |
static XMSeconds | x_ticks_to_msec (XTicks ticks) |
チックをミリ秒に変換した値を返します | |
static XUSeconds | x_ticks_to_usec (XTicks ticks) |
チックをマイクロ秒に変換した値を返します | |
time_conversion_macros | |
#define | X_MSEC_TO_TICKS(msec) (X_DIV_ROUNDUP((msec) * X_TICKS_PER_SEC, 1000)) |
#define | X_USEC_TO_TICKS(usec) (X_DIV_ROUNDUP((usec) * X_TICKS_PER_SEC, 1000) / 1000) |
#define | X_TICKS_TO_MSEC(ticks) (((ticks) * 1000) / X_TICKS_PER_SEC) |
#define | X_TICKS_TO_USEC(ticks) ((((ticks) * 1000) / X_TICKS_PER_SEC) * 1000) |
timeval_operations | |
以下リンク先のstruct timevalに対する操作の互換マクロです。XTimeValに対して使 用します。 https://linuxjm.osdn.jp/html/LDP_man-pages/man3/timeradd.3.html | |
#define | x_timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0) |
#define | x_timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) |
#define | x_timercmp(tvp, uvp, cmp) |
#define | x_timeradd(tvp, uvp, vvp) |
#define | x_timersub(tvp, uvp, vvp) |
時間を扱うための関数等
#define X_TICKS_FOREVER ((XTicks)-1) |
待ち関数で永久待ちを表す特殊値です
マルチタスク系の特定の関数でのみ有効です。
#define X_TICKS_PER_SEC X_CONF_TICKS_PER_SEC |
#define x_timeradd | ( | tvp, | |
uvp, | |||
vvp | |||
) |
#define x_timercmp | ( | tvp, | |
uvp, | |||
cmp | |||
) |
#define x_timersub | ( | tvp, | |
uvp, | |||
vvp | |||
) |
typedef int32_t XSeconds |
秒単位の時間を格納する型です
XTimeはUNIX時間が基準ですが、XSecondsは単純な秒数として扱うことを意図してい ます。
typedef uint32_t XTime |
time_tの代替をするシステム時刻を格納するための型です
POSIX互換システム風にUNIX時間1970年1月1日0時0分0秒(ただしタイムゾーンは考慮 しない)からの経過秒数を表します。 旧いシステムではtime_tは32bit符号ありで実装されることが多く、2038年問題があ りますが、XTimeは符号なしなので2106年まで保持可能です。
int x_port_gettimeofday | ( | XTimeVal * | tv, |
void * | tz_dammy | ||
) |
現在時刻を返します
POSIX標準のgettimeofday()のpicox版です。本来は第2引数にタイムゾーンを指定し ますが、picoxは対応していないため、ダミーの引数として常に無視します。
ポインタを渡すのが面倒な時はx_gettimeofday2()を使用するとXTimeValを戻り値か ら直接取得できます。
https://linuxjm.osdn.jp/html/LDP_man-pages/man2/gettimeofday.2.html
void x_port_mdelay | ( | XMSeconds | msec | ) |
ミリ秒単位のディレイを行います
void x_port_msleep | ( | XMSeconds | msec | ) |
ミリ秒単位のスリープを行います
精度は実装次第ですが、通常はチック周期に切り上げられると考えてください。
void x_port_udelay | ( | XUSeconds | usec | ) |
マイクロ秒単位のディレイを行います
void x_port_usleep | ( | XUSeconds | usec | ) |
マイクロ秒単位のスリープを行います
int32_t tv_usec |
秒