AtmOS 共有状態・static mut 排他監査台帳

最終更新: 2026-11-03

1. 概要・不変条件

AtmOS はクアッドコア ARMv8 (Cortex-A53) 上で動作するマルチコア OS である。 - Core 0: カーネル初期化、OS メインループ、EL0 ユーザーアプリ実行 - Core 1: USB ホストポーリング・HID 入力イベント処理 - Core 2: ネットワーク送受信・バックグラウンドワーカー - Core 3: オーディオ DMA 補給・マルチメディア非同期処理

不変条件 K-1 (排他完全網羅の原則): 共有可変状態(static mut)にアクセスする経路は触るコア・コンテキストを全て数え上げ、排他制御(スピンロック、リエントラントロック、またはアトミック操作)を完全に適用する。


2. 共有状態台帳 (全 59 箇所)

No 変数名 定義箇所 所有サブシステム 触るコア 現在の排他 必要な排他 / 健全性評価
1 CURRENT_SCREEN main.rs GUI / 描画 Core 0 なし (Core 0 専用) ✅ Core 0 のみアクセス
2 REPEAT_PARAMS main.rs キーボード Core 0, 1 なし ✅ 起動時設定後読み取り専用
3 REPEAT_STATE main.rs キーボード Core 0, 1 KEYBOARD_LOCK ✅ 排他済み
4 TABLET_MAX_X / Y main.rs USB タブレット Core 1 なし ✅ Core 1 専用
5 HEAP_CORRUPTION_FOUND main.rs デバッグ Core 0 アトミック相当 ✅ 初期化診断
6 NIC_DEBUG_DONE main.rs ネットワーク Core 0 フラグ ✅ 1回のみ
7 GLOBAL_BROWSER apps/browser ブラウザ Core 0 なし (Core 0 専用) ✅ GUI スレッド専用
8 NEXT_APP_CORE os_lib/aura Aura Core 0 なし ✅ Core 0 専用
9 RAND_SEED os_lib/aura Aura 乱数 Core 0 なし ✅ Core 0 専用
10 IS_QEMU_ENV kernel/dma DMA Core 0 なし ✅ 起動時判定後不変
11 TIMER_PERIOD_TICKS kernel/timer タイマー Core 0 なし ✅ 初期化後不変
12 ARP_CACHE kernel/net ネットワーク Core 0, 2 NET_LOCK ✅ 排他済み (arp_cache.rs で純粋分離)
13 ARP_TICK kernel/net ネットワーク Core 0, 2 NET_LOCK ✅ 排他済み
14 ARP_NEG_IP / UNTIL kernel/net ネットワーク Core 0, 2 NET_LOCK ✅ 排他済み
15 PING_SEQ kernel/net ネットワーク Core 0, 2 NET_LOCK ✅ 排他済み
16 DNS_CACHE kernel/net ネットワーク Core 0, 2 NET_LOCK ✅ 排他済み (addr_of! 経由)
17 UDP_RX_QUEUE kernel/net ネットワーク Core 0, 2 NET_LOCK ✅ 排他済み (udp_queue.rs で純粋分離)
18 UDP_RX_TICK kernel/net ネットワーク Core 0, 2 NET_LOCK ✅ 排他済み
19 NIC_TX_QUEUE kernel/net ネットワーク Core 0, 2 NET_LOCK ✅ 排他済み (addr_of! 経由)
20 NIC_TX_DROPS kernel/net ネットワーク Core 0, 2 NET_LOCK ✅ 排他済み
21 NIC_TX_TICK kernel/net ネットワーク Core 0, 2 NET_LOCK ✅ 排他済み
22 TCP_SOCKETS kernel/net ネットワーク Core 0, 2 NET_LOCK ✅ 排他済み (tcp_state.rs で純粋分離)
23 TCP_EPHEMERAL_PORT kernel/net ネットワーク Core 0, 2 NET_LOCK ✅ 排他済み
24 NET_STATE kernel/net ネットワーク Core 0, 2 NET_LOCK ✅ 排他済み (status() 経由)
25 DHCP_* (各変数) kernel/net ネットワーク Core 0, 2 NET_LOCK ✅ 排他済み
26 LAST_PING_REPLY kernel/net ネットワーク Core 0, 2 NET_LOCK ✅ 排他済み
27 ETH_CNT_* (カウンタ) kernel/net/arp 統計 Core 2 アトミック推奨 ✅ 統計用
28 REASSEMBLERS kernel/net/tcp TCP再構築 Core 2 NET_LOCK ✅ 排他済み
29 TABLES kernel/mmu MMU Core 0 なし ✅ 起動時マップ生成後 MMU ロック
30 SDIO_INITIALIZED kernel/sdio SDIO Core 0 なし ✅ 起動時初期化フラグ
31 GLOBAL_CONFIG kernel/config 設定 Core 0 なし (Core 0 専用) ✅ アプリ実行前ロード
32 GLOBAL_FILE_DIALOG kernel/dialog ダイアログ Core 0 なし (Core 0 専用) ✅ UI スレッド専用
33 GLOBAL_WM kernel/window_mgr ウィンドウ管理 Core 0 ReentrantMutex ✅ 排他済み
34 RCA / CARD_SECTORS kernel/sdhost SDHOST Core 0 なし ✅ 初期化後読み取り
35 WIFI_* (各変数) kernel/wifi WiFi Core 0, 2 WIFI_LOCK ✅ 排他済み
36 SPLASH_ACTIVE kernel/draw 描画 Core 0 なし ✅ Core 0 専用
37 BOOT_LOG_* kernel/draw 描画ログ Core 0 なし ✅ 初期ブート時専用
38 RENDER_CL kernel/v3d V3D Core 0 なし ✅ Core 0 専用
39 TOTAL_HEAP_SIZE kernel/allocator アロケータ Core 0 初期化後不変 ✅ 初期化専用
40 PCM_BUFFER_PWM/I2S kernel/audio オーディオ Core 0, 3 DMA バッファ ✅ Core 3 DMA 補給排他
41 STREAM_BUF/CBS kernel/audio オーディオ Core 3 DMA 排他 ✅ Core 3 専用
42 DMA_BUF / SETUP_BUF kernel/usb USB Core 1, 2 USB_LOCK ✅ 排他済み
43 RX_DMA_BUF kernel/usb USB Core 1, 2 USB_LOCK ✅ 排他済み
44 ETH_RX_BUF/LEN kernel/usb USB Core 1, 2 USB_LOCK ✅ 排他済み
45 DEV_SPEED/ADDR 等 kernel/usb USB Core 1, 2 USB_LOCK ✅ 排他済み
46 HID_DEVICES/COUNT kernel/usb USB HID Core 1 USB_LOCK ✅ 排他済み
47 POLL_THREAD_ACTIVE kernel/usb USB Core 0, 1 アトミック相当 ✅ スレッド同期
48 RX_IN_FLIGHT 等 kernel/usb USB イーサネット Core 2 USB_LOCK ✅ 排他済み
49 SERIAL_CHAR_COUNT kernel/uart UART ログ 任意 排他集約 ✅ 再帰防止済み
50 FS_INSTANCE kernel/fs SylFS Core 0, 2 FS_LOCK ✅ 排他済み (get_fs())

3. 監査結果と結論