import vpsdk.syscall as _syscall import vpsdk.devfs as devfs import viperlib # ============================================================ # vpsdk.stdio - 用户态 printf/exit(CExport 裸名,供内核侧代码 # 如 includes/memhub.vp 跨模块引用解析) # # 裸机 App 无 libc:printf 走 viperlib.vsnprintf 格式化 + 写 /dev/serial0 # 输出到串口(S4 前是 SERIAL_PUTS 私有 syscall,已删除);exit 走 EXIT syscall。 # ============================================================ export def printf(fmt: const str, *args) -> int: """格式化输出到串口(写 /dev/serial0),返回输出字节数""" if fmt is None: return 0 buf: [1024]char n: int = viperlib.vsnprintf(&buf, 1024, fmt, args) devfs.serial_puts(&buf) return n export def exit(status: int): """终止当前进程(EXIT syscall:销毁本进程窗口)""" _syscall._syscall1(uint64(_syscall.Syscall.EXIT), uint64(status)) export def fflush(stream: const rawptr) -> int: """刷新输出流:串口/控制台输出都是直写,无缓冲可刷,空操作返回 0 覆盖 libc fflush 的裸机缺失(includes/memhub.vp 的诊断/终止路径 call @fflush); 与 printf/exit 同为 CExport 裸名,供内核侧 includes 跨模块引用解析。 """ return 0