Files
STM32F4-Base/test/host/sys_log_mcu/stub/cmsis_os.h
T
wandering1 794906cdc8 test(host): P2 覆盖率批次,5 套主机单测与共享假 FatFs
P2 五个文件全部进分母(三名队友并行,写范围互斥、零越界):
  net_socket 420 条 / 881-883=99.8%、52-52 函数(S1~S6 分片)
  sys_log_mcu 75 条 / 310-313=99.0%、12-12
  console_log 104 条 / 188-189=99.5%、15-15
  cfg_file_store_mcu 34 条 / 97-97=100%、10-10
  soe_store 26 条 / 78-79=98.7%、4-4
合计 659 条断言,P2 本体 1554-1561=99.6%、93-93 函数。

账:套件 28→33 全绿;files_tested 32→37;未触及 112→107(.c 34→29,
恒等式 29 = 0(P1剩) + 0(P2) + 29(P3) 咬合,§9 终点判据达成);分母
4684→6245 插桩行;line 85.8%→89.3%;func 90.1%→92.2%(这批 5 个文件
全都以 ≥98.7% 进分母,故未摊薄)。--update-baseline 前后逐文件比对:
下降 0 个文件。

基建:新建 test/host/common/fatfs_fake.{h,c}(以真实 ff.h 为声明源、只
定义三文件实际调用的 9 个 f_*,缺哪个链接期响;卷忙/短写/FR_DENIED
可注入;短名违规分档);扩展 ch395f_fake 为纯新增(g_fx/g_fxchip 另开
一份世界 + ext_reset 挂进既有复位,既有三套面一字不动),并按真头修正
两个错值常量(SOCKET_OPEN 0x01→0x05、TCP_ESTABLISHED 0x05→0x04),
另在 net_socket runner 加真头/假件同名常量文本核对闸(负例验证过)。
存量回归:net_listener 34、net_events 34、net_pending 43、net_select 22、
nand_port 149、lftpd_io 33、vol_lock 33、soe 32、cfg_file 151 全绿。

编号:补 TC-HOST-{NETSOCK,SYSLOG,CFGFST,SOESTORE,CONLOG} 五族(22→27,
先补族再引号);net_socket 模块码由自取的两字母 NS 正名为 NETSOCK;
id-check 增量拦截无台账外新账,可判定比例 83.27%(基线 82.6%)。

文档:覆盖率口径 §9 新增「P2 落地」(含两套分母口径差、10 条现状表、
12 条可复用手法与并发红线),§8 第 1 条改「清单已吃穿」,补变更记录。
本提交未改任何生产代码(App/Drivers/Src/Lib/MDK-ARM 零触碰)。

10 条现状已逐条登记在 §9(含 sys_log_mcu.c:509~537 卷忙整批丢日志、
net_socket.c 同文件两套 IP 字节序、UDP 两 API 绕过 netTask),已获指示
全部修复,另开一轮(含测试字面量统一纯 ASCII)。

gate: pre-commit run --all-files → 39 hooks, 38 Passed; only mem-numbers
Failed(本工作树从未 @build,无 .map 事实源,属分支期已知陷阱);
mem-budget Passed;test-coverage 与 id-check Passed。RAM/Flash 增量 = 0
(纯测试批次)。按仓内分支约定走 --no-verify,台账回填留待主树合并后。
2026-10-24 17:54:02 +08:00

92 lines
3.4 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* 模块名称:主机侧单测桩 - cmsis_os.h(sys_log_mcu 套件专用)
* 模块功能:给 App/log/sys_log_mcu.c(与 soe_store.c)一个/g主机可编译的 CMSIS-RTOS V2 **消息队列 +
* 内核状态**最小子集。
*
* ⚠ 仅供 test/host/sys_log_mcu/ 使用,不参与 MCU 构建。
* 真实 Middlewares/.../CMSIS_RTOS_V2/cmsis_os.h 第 126/127/155 行会拉
* FreeRTOS.h + task.h + cmsis_os2.h(整棵内核 + portmacro),PC 上编不动。
*
* 保真点(逐条对照真实头,签名一字不改;改动真实头即编译期报错):
* - osMessageQueueId_t = void * (cmsis_os2.h:207)
* - osMessageQueueAttr_t 六字段同序同型 (cmsis_os2.h:272~279)
* ——sys_log_mcu.c 用 .name 指定成员初始化,字段名也必须一致
* - osStatus_t osMessageQueuePut(id, const void *, uint8_t, uint32_t) (:689)
* - osStatus_t osMessageQueueGet (id, void *, uint8_t *, uint32_t) (:697)
* - osMessageQueueId_t osMessageQueueNew(uint32_t, uint32_t, const attr *)(:676)
* - osKernelState_t osKernelGetState(void) (cmsis_os2.h:298)
* - osOK = 0 / osErrorResource = -3 (cmsis_os2.h:177/180)
* - osKernelRunning = 2 (cmsis_os2.h:63)
* 本模块只用到内核状态的两个值,其余按真实枚举原样列出(少列会让"顺手改了
* 状态判定"这类漂移编不出来)。
*
* 队列行为由测试单元给**真 FIFO + 满/空语义**的强符号实现(不是恒返 osOK 的空壳):
* soe_store_post 的"队列满就丢弃并计数"、drain 的"取空即停"全靠这两条才测得出。
*
* 创建日期:2026-10-24
*/
#ifndef CMSIS_OS_H
#define CMSIS_OS_H
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
/* 不透明句柄(真实 cmsis_os2.h:195~207 全是 void *) */
typedef void *osMessageQueueId_t;
typedef void *osThreadId_t;
typedef void *osTimerId_t;
typedef void *osEventFlagsId_t;
typedef void *osMutexId_t;
typedef void *osSemaphoreId_t;
/* 状态码(cmsis_os2.h:176~186) */
typedef enum {
osOK = 0,
osError = -1,
osErrorTimeout = -2,
osErrorResource = -3,
osErrorParameter = -4,
osErrorNoMemory = -5,
osErrorISR = -6
} osStatus_t;
/* 内核状态(cmsis_os2.h:60~68) */
typedef enum {
osKernelInactive = 0,
osKernelReady = 1,
osKernelRunning = 2,
osKernelLocked = 3,
osKernelSuspended = 4,
osKernelError = -1
} osKernelState_t;
/* 消息队列属性(cmsis_os2.h:272~279,字段名与顺序原样) */
typedef struct {
const char *name;
uint32_t attr_bits;
void *cb_mem;
uint32_t cb_size;
void *mq_mem;
uint32_t mq_size;
} osMessageQueueAttr_t;
osMessageQueueId_t osMessageQueueNew(uint32_t msg_count, uint32_t msg_size,
const osMessageQueueAttr_t *attr);
osStatus_t osMessageQueuePut(osMessageQueueId_t mq_id, const void *msg_ptr,
uint8_t msg_prio, uint32_t timeout);
osStatus_t osMessageQueueGet(osMessageQueueId_t mq_id, void *msg_ptr,
uint8_t *msg_prio, uint32_t timeout);
uint32_t osMessageQueueGetCount(osMessageQueueId_t mq_id);
osStatus_t osMessageQueueReset(osMessageQueueId_t mq_id);
osKernelState_t osKernelGetState(void);
#ifdef __cplusplus
}
#endif
#endif /* CMSIS_OS_H */