fix(watchdog+launcher+sdk): M40 电源键 time64 ABI + 锁屏/叠加残留链

- sdk/meow_time32: 抽出可独立链接的 o32 time32 取时/睡眠设施(不依赖 meow_ui.a,
  watchdog 等独立静态组件可直接链;可选 -DMEOW_TIME32_LIBC_OVERRIDES 接管 libc 入口)
- watchdog: now_ms/usleep 改走 time32(修复 held 变天文数字→每次单击都弹菜单);
  阈值读 power.longpress_menu_ms/forceoff_ms(缺省 3000/8000),删除
  PWR_TOGGLE_MS==PWR_MENU_MS;新增 wd_power.h 纯判定 + 宿主行为矩阵测试
- launcher: App 前台电源菜单补齐 §10.5(notif 全抑制 + 帧恢复 + SIGCONT 排空 +
  标记翻回前台);show_power_menu 恢复进入前背景帧(关闭后不再停留菜单画面);
  重绘挪到首轮按键采样之后;activity 标记排空窗 + 会话入口清理 + manual_off 去闩锁
- lock_screen: 电源改按下边沿 + 进场 300ms 才熄屏;电源熄屏退出也恢复底层帧;
  launcher 在 SIGCONT 前写 /tmp/meow_app_repaint,SDK present 消费并 dirty_full
- power_menu: 菜单内强关接 power.forceoff_ms(按 longpress 抵扣),日志不再谎称 8s
- 重编 meow_ui.a 并重链 meow_launcherd/ncm/files/hello/reader(picbrowser 无源码)
- fw_content.conf: 同步 launcherd/watchdog 新 md5;顺带修正 M35 遗留的 nyai 失效钉值

Host: test_wd_fw 66/66、test_overlay_gate 40/40、test_meow_time64/time/repaint PASS。
真机未验证(设备关机);未刷机、未写设备。
This commit is contained in:
AskaEth committed 2026-11-10 22:51:00 +08:00
1 parent b1acc9096b
commit 63b278e13e
28 files changed
+977 -217

No files matched your search

+30
View File
@@ -316,3 +316,33 @@ llvm-nm probe_sdk | grep -c __timedwait_cp # 1(libc 那份未被拉入)
真机验证仍待设备(本单未碰真机):`pthread_cond_timedwait` 传 100ms 超时的等待应真的等
约 100ms 再超时,而不是立即返回。
## 9. M40:独立链接的 time32 基础设施(系统组件解药)
M16 的全部修复都只在 **链接 meow_ui.a** 的进程里生效。不链 SDK 的系统组件(watchdog /
sysui / svcd / bootmenu / amsd / audiod / netmgrd / crash / svc_perf / powermgr / meowpanel)
仍然各自中招:它们的 `now_ms()`/超时/退避全部按 16 字节 time64 读、libc 只写 8 字节 time32。
M40 把与 SDK 无关的部分抽成可独立链接的 TU:
| 文件 | 内容 | 依赖 |
| --- | --- | --- |
| `sdk/meow_time32.h` | o32 结构、纯换算、`meow_time32_clock_gettime()` / `meow_time32_monotonic_ms()` / `meow_time32_sleep_us()` | 仅 stdint |
| `sdk/meow_time32.c` | 上述实现;mips o32 走 `SYS_clock_gettime32` / `SYS_nanosleep`,宿主回退 libc | libc |
| `sdk/meow_ui_time.c` | 保留 futex/timerfd/clock_settime 接管;换算/取时改为调用 `meow_time32.c` | SDK |
系统组件构建脚本只需把 `../sdk/meow_time32.c` 加进链接命令;若希望链接期整体接管
libc 的取时/睡眠入口(不必逐个改调用点),再编译该 TU 时加 `-DMEOW_TIME32_LIBC_OVERRIDES`
(**不要**与 meow_ui.a 同时链接,否则 `__clock_gettime` 等重复定义)。
当前已接入:`meow_watchdog`(`build_watchdog.sh`)。待接入清单与各自脚本见 M40 报文;
本单不改那些组件的源码/脚本(scope 限制),只提供设施与接入范式。
宿主单测:
```
cd patch_v2/meow_watchdog
bash build_watchdog.sh host # time32 取时/睡眠 + 电源阈值矩阵(66 项)
cd ../sdk
gcc -Wall -Wextra -I. test_meow_repaint.c -o /tmp/tr && /tmp/tr
```