Skip to main content

Module reclock

Module reclock 

Source
Expand description

パニック回復に対応したロック(Recoverable Mutex)。

AtmOS は panic = "abort" + 自前 #[panic_handler] でプロセス単位にパニックを隔離するが、 巻き戻し(unwind)が無いため、ロック保持中に死ぬと MutexGuard の Drop が走らずロックが 永久に保持されてしまう(以後 NET_LOCK 等を取ろうとした全プロセスがデッドロック)。

RecoverableMutex は保持中のコア ID を記録し、パニックハンドラが force_release_if_core(cid)そのコアが保持していたロックだけ を強制解放できる。 他コアが正当に保持しているロックには触れない(クリティカルセクション破壊を避ける)。

Structs§

RecGuard
RecoverableMutex

Constants§

FREE 🔒
どのコアも保持していないことを表す番兵値。

Functions§

selftest
パニック回復ロックの自己テスト。実際にパニックを起こさず、ガードを leak して 「保持したまま死んだ」状態を作り、force_release_if_core が正しく回復することを確認する。 起動時に呼ばれ RECLOCK_SELFTEST: PASS/FAIL を出力(CI スモークの判定マーカー)。
unreachable_guard 🔒