時間管理 - _msecs_to_jiffies()
概要
指定された時間(ミリ秒)に必要な周波数を算出する
詳細
ミリ秒を表す符号なし整数mを引数として取得し、以下の定数から周波数の回数に変換する
- HZ : _CONFIG_HZによって指定されるCPUの周波数を示す定数
- MSEC_PER_SEC : 1秒 = 1000ミリ秒のため1000を示す定数
周波数の設定によって以下のように処理内容が変わる
- 周波数が1000以下で、周波数が1000の約数の場合
(m + (MSEC_PER_SEC / HZ) - 1) / (MSEC_PER_SEC / HZ)
- 周波数が1000より大きく、周波数が1000の倍数の場合
- mがjiffies_to_msecs()にMAX_JIFFY_OFFSETを渡して実行した値と比較して大きかった場合はMAX_JIFFY_OFFSETを返すがそれ以外は以下の式から算出される値を返す
m * (HZ / MSEC_PER_SEC)
- 周波数がと1000の倍数でも約数でもない場合
- 周波数が1000より大きく、mがjiffies_to_msecs()にMAX_JIFFY_OFFSETを渡して実行した値と比較して大きかった場合はMAX_JIFFY_OFFSETを返すがそれ以外は以下の式から算出される値を返す
(MSEC_TO_HZ_MUL32 * m + MSEC_TO_HZ_ADJ32) >> MSEC_TO_HZ_SHR32
MSEC_TO_HZ_MUL32、MSEC_TO_HZ_ADJ32は両方とも定義先が不明な謎定数です。。