feat(amsd): meow_amsd 活动管理器一期 + am CLI (agent-212, 用户定案) — svcd托管(trigger=boot); 生命周期注册表(状态/时长/退出码/信号/崩溃计数+历史环形); launcher launch/exit/stdout管道捕获上报(logcat式,崩溃尾巴drain不丢); am status/list/history/start/kill(root门); crash双保险转发; S89预置conf
amsd f8d7f61b / am cfc4cbd4 / launcher 97c1b222(含字库扫描签名门控修CPU100%) 宿主+qemu全链路验证通过
This commit is contained in:
1 parent
b81e7438e4
commit
5fbf30755c
16 files changed
+1722
-4
No files matched your search
@@ -1190,6 +1190,39 @@ static void ipc_dispatch(struct meow_ipc_msg *m)
|
||||
n.app_id, n.nav_type, n.depth, n.current);
|
||||
break;
|
||||
}
|
||||
/* AMSD_DESIGN §4.3:amsd `am start`/`am kill` 控制请求。主循环单写者仅置位 pending
|
||||
* (run_menu 前台循环 / launch_* waitpid 循环消费),不回执启动结果(一期 best-effort)。 */
|
||||
case MSG_AMS_START: {
|
||||
m_ams_start_t s;
|
||||
memset(&s, 0, sizeof s);
|
||||
memcpy(&s, m->payload, m->plen < (uint16_t)sizeof s ? m->plen : (uint16_t)sizeof s);
|
||||
s.app_id[MEOW_APP_ID_MAX - 1] = 0;
|
||||
s.activity[MEOW_ACT_MAX - 1] = 0;
|
||||
int rc = meow_ams_pending_start_set(s.app_id, s.activity);
|
||||
m_ack_t a;
|
||||
a.code = (uint32_t)(rc < 0 ? -rc : MEOW_OK); /* 0=OK;MEOW_ERR_BUSY=有前台 App */
|
||||
a.status = 0;
|
||||
ipc_send(m->fd, MSG_ACK, m->req_id, &a, sizeof a);
|
||||
logmsg("ipc: AMS_START app=%s act=\"%s\" -> ACK code=%u", s.app_id, s.activity, a.code);
|
||||
break;
|
||||
}
|
||||
case MSG_AMS_KILL: {
|
||||
m_ams_kill_t k;
|
||||
memset(&k, 0, sizeof k);
|
||||
memcpy(&k, m->payload, m->plen < (uint16_t)sizeof k ? m->plen : (uint16_t)sizeof k);
|
||||
k.app_id[MEOW_APP_ID_MAX - 1] = 0;
|
||||
m_ack_t a;
|
||||
if (g_app_session_active) {
|
||||
meow_ams_pending_kill_set(k.app_id);
|
||||
a.code = MEOW_OK;
|
||||
} else {
|
||||
a.code = (uint32_t)MEOW_ERR_NOENT; /* 无前台 App 可终止 */
|
||||
}
|
||||
a.status = 0;
|
||||
ipc_send(m->fd, MSG_ACK, m->req_id, &a, sizeof a);
|
||||
logmsg("ipc: AMS_KILL app=%s -> ACK code=%u", k.app_id, a.code);
|
||||
break;
|
||||
}
|
||||
/* M2a:通知存储(NOTIFICATION_SYSTEM.md §4/§7/§8)。IPC 线程只入队,此处在主循环
|
||||
* 单写者落存储 + 回 ACK(与 HELLO/QUERY 同一线程模型,绝不在 socket IO 阻塞)。 */
|
||||
case MSG_NOTIFY: {
|
||||
|
||||
Reference in new issue
Block a user