suseconds_t |
辞書:電算用語の基礎知識 プログラミング用語編 (PTPROGY) |
読み:エス-ユーセコンズ-アンダースコア-ティー |
外語:suseconds_t: signed of microseconds |
品詞:名詞 |
Linuxなどで使用されている、タイマー/時刻表現用の変数型のうちの一つで、マイクロ秒を格納するのに充分な大きさをもった符号付整数の変数型。
|
概要 |
Linuxなどでは、ユーザー空間ではgettimeofday()、カーネル空間ではdo_gettimeofday()などで使用するstruct timevalが定義されており、ここでマイクロ秒の変数を定義するのに使用されている。
なお、POSIXでは同様の目的でstruct timespecを定義しており、こちらはナノ秒単位となっている。
特徴 |
単位 |
Linuxカーネル内では様々な変数でタイマー/時刻を表現している。
struct timevalを使うdo_gettimeofday()は、内部ではstruct timespec型の変数xtimeという、1970年1月1日 00:00:00(The Epoch)を起点とするナノ秒単位のカウンターを加工して返却している。
実際のxtimeの精度はtick単位(jiffies相当)だが、x86システムであればCPUのrdtsc命令などを使い、tick単位より細かい単位をTSCなどの高精度のクロックソースの値で補完をしている。但しマルチコアまたはマルチプロセッサー環境では複数のTSCが存在し、互いに同期はしていないため、必ずしも正確ではない。
スリープ |
Android端末など、機器が省エネのためスリープに入ると、jiffiesはカウントが止まる。
xtimeは起床後にスリープ時間を概算して補正するようになっているらしいが、あまり正確ではない。
MSMの場合、より正確なタイマーが別途用意されている。
定義 |
Linux |
Linuxのユーザー空間では、次のように定義されている。
まず__kernel_suseconds_tが、以下のいずれかで定義される。
asm/posix_types_64.h
asm/posix_types_32.h
asm-generic/posix_types.h
次に、これを用いて定義する。
sys/types.h
typedef __suseconds_t suseconds_t;
suseconds_tは、間接的にlongで定義されている。
Android |
Linuxカーネル内でも同様である。例えばAndroidのLinuxカーネル内では、次のように定義されている。
android/kernel/include/asm-generic/posix_types.h
typedef long __kernel_long_t;
typedef __kernel_long_t __kernel_suseconds_t;
android/kernel/include/linux/types.h
typedef __kernel_suseconds_t suseconds_t;
suseconds_tは、間接的にlongで定義されている。
リンク |
通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022) Search System : Copyright © Mirai corporation Dictionary : Copyright © WDIC Creators club |