1. 程式人生 > >SylixOS時間變換介紹

SylixOS時間變換介紹

流程 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時間變換介紹