suseconds_t

読み:エス・ユーセコンズ・アンダースコア・ティー
外語: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

typedef long __kernel_suseconds_t;

次に、これを用いて定義する。

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で定義されている。

用語の所属
Linux
日付型
関連する用語
jiffies
ktime_t
xtime

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club