SylixOS時間變換介紹
阿新 • • 發佈:2018-01-19
流程 out bool timeout 方法 struct 概述 sso .net [TOC]
1、概述
SylixOS中提供了時間變換相關接口,主要用於計算兩個時間點之差以及根據入參時間timespec計算超時時間。
2、接口介紹
2.1 計算兩個時間點之差
SylixOS中用於計算兩個時間點之差的接口函數原型如下:
ULONG __timespecToTickDiff (const struct timespec *ptvS, const struct timespec *ptvE); INT64 __timespecToTickDiff64 (const struct timespec *ptvS, const struct timespec *ptvE);
函數原型分析:
? - 函數返回兩個時間點之差,並轉換為tick數;
? - 參數ptvS是開始時間;
? - 參數ptvE是結束時間。
以上兩個函數接口入參定義相同,唯一的區別是返回值分別是32位和64位數值。
2.2 根據timespec計算超時時間
SylixOS中用於計算超時時間的接口函數原型如下:
ULONG __timespecTimeoutTick (BOOL bRel, const struct timespec *ptv); INT64 __timespecTimeoutTick64 (BOOL bRel, const struct timespec *ptv);
函數原型分析:
? - 函數返回超時時間(用tick數表示);
? - 參數bRel是判斷相對時間還是絕對時間;
? - 若計算相對超時時間,參數ptv是當前時間與結束時間的間隔,需根據當前時間計算結束時間點;若計算絕對超時時間,則參數ptv即為結束時間點。
以上兩個函數接口入參定義相同,唯一的區別是返回值分別是32位和64位數值。
3、 超時時間計算流程
根據上一章節可以看出計算超時時間分為相對時間和絕對時間,兩者計算方法不同。現以__timespecTimeoutTick為例,分析其具體計算流程如下圖所示。
由上圖可以看出,當計算相對超時時間時,需根據入參時間計算結束時間,再根據結束時間和當前時間的差值計算超時時間;當計算絕對超時時間時,入參即為結束時間,可直接計算超時時間並返回。
SylixOS時間變換介紹