feat: F1/F4/F5 phase-1 skeleton + insane-roadmap docs rework

- docs: ROADMAP_INSANE (five-phase plan), TASKBOARD, STATUS single source of truth, PHILOSOPHY; rewrite README/ARCHITECTURE non-goals; archive ROADMAP phase 0-9; drop contradictory dev-plan doc
- F1: unified lotus panic screen (panic_full: fb draw + regs dump + DRR crash archive); IDT exception path and dkm_api_panic routed through it
- F4: leveled boot selftest (FUCK [boot] selftest=0|1|2), IDT/CS fatal checks + DMA probe
- F5: [dsk] skip_firstinit direct-to-desktop; build/configs dev+release templates now injected
This commit is contained in:
Linehu
2026-10-01 23:29:49 +08:00
parent 1074962546
commit e4307ff0ec
43 changed files with 3078 additions and 385 deletions
+1
View File
@@ -2,6 +2,7 @@
#define UTSM_ASSERT_H
#include <utsm/log.h>
#include <utsm/panic.h>
#define UTSM_ASSERT(cond) do { if (!(cond)) { panic("assertion failed: " #cond); } } while (0)
+2
View File
@@ -105,6 +105,8 @@ void drr_init(void);
const u64 *drr_get_root_key(void);
u64 drr_recovery_generation(void);
void drr_report_fault(const char *reason);
/* F1: 崩溃归档(crash_buf 写入;返回 0=已归档,-1=DRR 未初始化) */
int drr_crash_archive(const char *symbol, const char *msg, const void *regs);
void drr_log_write_intent(u32 segment_slot, u64 offset, u64 len);
void drr_log_write_commit(u32 segment_slot, u64 offset, u64 len);
+36
View File
@@ -0,0 +1,36 @@
#ifndef UTSM_PANIC_H
#define UTSM_PANIC_H
#include <utsm/types.h>
/* ===================================================================
* F1: 内核 panic 统一兜底(莲花崩溃屏)
*
* 崩了也得崩出莲花:
* - 帧缓冲直接绘制(不走 console_fb 驱动——崩溃时驱动可能已挂)
* - 淡金莲花 + panic_symbol + 消息 + 寄存器简表
* - DRR 归档(crash_buf)后 halt
*
* 本路径只依赖:Limine framebuffer(Limine 常驻映射)+ serial + DRR
* Emergency Pool(静态区),不依赖堆/驱动/中断。
* =================================================================== */
/* 寄存器简表(可传 0:无异常帧的普通 panic) */
typedef struct panic_regs {
u64 rip;
u64 rsp;
u64 rflags;
u64 cs;
u64 err;
u64 vector;
u64 cr2;
u64 rax, rcx, rdx, rsi, rdi, r8, r9, r10, r11;
} panic_regs;
/* 统一 panic 入口:画莲花崩溃屏 + 串口日志 + DRR 归档 + halt(不返回) */
void panic_full(const char *symbol, const char *msg, const panic_regs *regs);
/* 兼容旧接口:panic("msg") = panic_full("UTSM-PANIC", msg, 0) */
void panic(const char *msg);
#endif /* UTSM_PANIC_H */