過去のデバイスドライバのバグを分類し、それをRustでどの程度防げるかを分析するという面倒な仕事からは、引き続き目を背け、Rustの型システムを活用してコンパイル時にAPI誤用によるバグを防ぐ設計例として、筆者が開発に関わっているタイマー抽象化APIを紹介します。 タイマーAPI基礎知識特定の時点を時間を表すCの型としてktime_tがあり、これは64ビット符号付き整数(s64)で表現され、単位はナノ秒です。ktime_t型は期間を表す型としても使われます。 Linuxカーネルには、下記のように複数のクロックソースが用意されていて、デバイスドライバは用途や特性に応じてクロックソースを使い分けます。例えば、realtimeクロックは補正によって時間が過去に戻る場合があるので、経過時間の測定用途には不向きです。また、独自のクロックソースを実装しているデバイスドライバもあります。 クロックソース
