オーバーフローが許可され、定義された間隔で < > が後の値から以前の値を伝え続けるクーターへのコードが必要です。
明確にするために、1つの可能な実装は次のとおりです。
そのような 2 つのカウンターcur
とdut
(テスト対象のデバイス) を考え、2 つの機能を考えます。
bool isEarlier(cur, dut) // Is dut earlier than cur?
bool isLater(cur, dut)
cur
とdut
は 16 ビットで、cur
オーバーフローしたばかりで、現在の値は としましょう5
。の値に応じてdut
、関数は戻ります
- 0 ~ 16384: isEarlier ->
(cur < dut)
, isLater ->(cur > dut)
- 16384 ~ 32768: isEarlier -> false、isLater -> true
- 32768 ~ 49152: 無効、ログ エラー
- 49152 ~ 65536: isEarlier -> true、isLater -> false
私は自分でコードを書くことができます。問題ありません。私はただ怠け者です。実際、PostgreSQL にはそのようなもの (トランザクション ID ラップ) があることを知っていますが、実際にそれを行う関数を見つけることができませんでした。Linuxカーネルにそのようなもの、おそらくマクロがあると確信しています。しかし、Google のコード検索でも、/usr/include/linux に対する grep でも、それを有効にすることはできませんでした。それがどこにあるのでしょうか?
cur と dut の役割を明確にしました。「無効」は保護手段としてあります。cur と dut の差が大きくなると、関数は最終的に不平を言います。