feat(watchdog): M52 资源压力可观测 + multi_font 日志去刷屏 + audiod bind 失败即退
- watchdog(新 wd_resguard.h + meow_watchdog.c):每 10s 采 /proc/meminfo (MemFree/MemAvailable)、进程总数、单父进程子进程数前 5 名;过阈值时向 MeowOS/logs 打 RESGUARD 告警,带等级/命中规则/进程名+PID 名单。零 fork、零堆分配、 不发任何信号(只报警)。阈值依据 = 真机实测 56872kB / 空闲 100 进程 / maxch=11, 推导写在 wd_resguard.h 文件头;日志只在等级跃迁或同态每 5 分钟复述。 - launcherd:multi_font 那行「每 2s 无条件打一条」改为只在配置签名跃迁时打 (新 mf_logsig.h 纯函数 + test_mf_logsig 宿主单测,接进 build_launcher.sh test)。 真机 6603 行日志里该行占 5297 行(80%)。 - audiod:io bind 失败不再只记一行就 return(旧行为让主线程 watchdog 空转 720s、 客户端全 ECONNREFUSED),改为明确报错 + g_stop 干净退出;仅动 io_thread 一个 hunk。
This commit is contained in:
1 parent
f3d7b386b2
commit
166b32d0e5
8 files changed
+755
-4
No files matched your search
@@ -1,6 +1,7 @@
|
||||
/* font_theme.c — MeowOS launcher 拆分模块(LAUNCHER_SPLIT_PLAN 拆分)。*/
|
||||
/* 本文件由拆分工具从 meow_launcherd.c 按职责搬移;逻辑与原文 0-diff(仅 static 可见性按跨模块需求调整)。*/
|
||||
#include "meow_launcher_internal.h"
|
||||
#include "mf_logsig.h" /* M52:多字体日志只在配置签名跃迁时打(纯函数,宿主单测) */
|
||||
|
||||
/* M2.6 字重结构 + M2.8 三级定案(FONT_SYSTEM):卡内字体 =
|
||||
* <卡根>/MeowOS/fonts/<family>/<weight>/(两级,向后兼容)或
|
||||
@@ -282,6 +283,10 @@ fallback:
|
||||
* meow_font_config_multifont 统一处理)。仅当全局字库已装载(mfont_ready / slot0)时生效;
|
||||
* 关或未装载 → 单字体(on=0),零额外开销。调用时机:启动 meow_font_ensure() 之后,以及
|
||||
* 设置页变更 display.multi_font / font.class_* / font.file。 */
|
||||
/* M52:上一次打过日志的配置签名(含 valid 位:签名本身可能恰好是 0,不能拿 0 当「没打过」)。 */
|
||||
static uint64_t mfont_log_sig;
|
||||
static int mfont_log_sig_valid;
|
||||
|
||||
void meow_font_reload_multifont(void)
|
||||
{
|
||||
static const char *cls_keys[MEOW_FCLS_COUNT] = {
|
||||
@@ -318,7 +323,17 @@ void meow_font_reload_multifont(void)
|
||||
}
|
||||
}
|
||||
int distinct = 0, truncated = 0;
|
||||
if (meow_font_config_multifont(on, gpng, gidx, cfg, &distinct, &truncated) != 0)
|
||||
int rc = meow_font_config_multifont(on, gpng, gidx, cfg, &distinct, &truncated);
|
||||
/* M52(日志刷屏):本函数被主循环 hotplug 轮询每 2s 调一次,配置绝大多数周期不变。
|
||||
* 旧实现无条件打 "multi_font: enabled..."(真机 6603 行日志里 5297 行 = 80%),
|
||||
* 现在只在「配置签名跃迁」时打 —— 首次、global 字体变、任一类字体变、on 变、
|
||||
* distinct/truncated 变。签名相同 = 行为相同 = 无新信息,静默。 */
|
||||
const char *csig[MEOW_FCLS_COUNT];
|
||||
for (int c = 0; c < MEOW_FCLS_COUNT; c++) csig[c] = cfg[c].png;
|
||||
uint64_t sig = mf_logsig(on, gpng, csig, MEOW_FCLS_COUNT, rc == 0 ? distinct : -1, truncated);
|
||||
/* 无变化(签名相同)= 行为相同 = 无新信息:静默,配置本身已生效。 */
|
||||
if (!mf_logsig_changed(&mfont_log_sig, &mfont_log_sig_valid, sig)) return;
|
||||
if (rc != 0)
|
||||
logmsg("multi_font: config failed -> single-font");
|
||||
else if (truncated)
|
||||
logmsg("multi_font: WARN >%d 套不同字体(会增内存),已按上限截断", distinct);
|
||||
|
||||
Reference in new issue
Block a user