Skip to main content

Crate atmos

Crate atmos 

Source

Modules§

apps
GUI アプリケーション層。
kernel
カーネルサブシステム群。
os_lib
AtmOS の各種ライブラリ機能(OS 標準ライブラリ相当)。

Macros§

debug
error
info
log
print
println
warn

Structs§

KeyRepeatParams
KeyRepeatState 🔒
SystemState

Constants§

AUTO_TEST_BROWSER
STACK_CANARY_MAGIC 🔒
コア0スタックの番兵値(decompress_brotliの旧64KBスタック配列がスタック オーバーフローを起こしブート全体を無音でフリーズさせていた事故(2026-07-23 発見・修正)を踏まえた再発防止策)。ハードウェアのガードページ(MMUで 未マップにする方式)は改修範囲が大きいため、まずソフトウェア側の番兵チェック で「検知だけでもできる」状態にする。コア0のスタックはlink.ld__cpu_stacks_start(下端、下方向に伸びるスタックが溢れた場合に最初に 踏み潰す場所)から__stack_cpu0_top(上端、64KB)まで。ここへ既知の マジック値を書き込んでおき、スタックを多用する処理(起動時セルフテスト等) の前後でcheck_stack_canary()を呼んで破壊されていないか確認する。

Statics§

CURRENT_SCREEN
REPEAT_PARAMS
REPEAT_STATE 🔒
TABLET_MAX_X 🔒
GUIシェルプロセス(チャットUI)
TABLET_MAX_Y 🔒
__bss_end 🔒
__cpu_stacks_end 🔒
__cpu_stacks_start 🔒
exception_vector_table 🔒
spin_cpu1 🔒
spin_cpu2 🔒
spin_cpu3 🔒

Functions§

check_stack_canary 🔒
コア0スタック下端の番兵値が破壊されていないか確認する。破壊されていれば (=スタックオーバーフローでコア0スタック下端を踏み越えた可能性が高い) falseを返す。呼び出し側は既存のKERNEL PANICと同じ書式で明確に報告し、 原因調査が「ビルドごとに再現性が変わる謎のハング」に逆戻りしないようにする。
gui_shell_process 🔒
kmain
mmu_test_process_a 🔒
mmu_test_process_b 🔒
net_service_thread 🔒
ネットワークサービススレッド(NTP 同期などのブロッキング処理を担当)。 HID ポーリング(usb_poll_thread)から分離することで、NTP の長時間ブロックが キーボード/タブレット入力を固める「起動直後フリーズ」を解消する。
panic 🔒
process_key_event 🔒
report_stack_canary_violation 🔒
check_stack_canary()がfalseを返した際に呼ぶ、rust_el1_sync_handlerkernel/syscall.rs)と同じ書式の明確な報告。ハードウェア例外を伴わない (未マップ領域への到達ではなく隣接する有効なBSS領域を静かに破壊する) タイプのスタックオーバーフローのため、既存のEL1例外ハンドラでは検出 できない。パニックはさせず(既に一部破壊されている可能性はあるが、 停止せず継続した方がシリアルログを最後まで残せて調査しやすいため)、 目立つ警告ログのみを出す。
secondary_entry 🔒
secondary_startup
syscall3 🔒
syscall_exit 🔒
syscall_print 🔒
syscall_yield 🔒
usb_poll_thread 🔒
user_pixel_demo
EL0 パイロット GUI アプリ: 全描画・入力処理を EL0 で行うピクセルデモ。 このプロセスが暴走・フォルトしても落ちるのは本プロセスのみで、OS は継続する。
user_test_abort 🔒
user_test_normal 🔒
write_stack_canary 🔒
コア0スタック下端に番兵値を書き込む。BSSクリア後・スタックを多用する処理 より前に一度だけ呼ぶこと。