SylixOS 中日志系统的相关实现在目录“/libsylixos/SylixOS/system/logLib”下。
1、内核中日志系统初始化
系统内核启动时候调用到 _logInit 函数,函数实现如下:
(1)创建消息队列;
(2)调用函数 API_PartitionCreate 创建内存分区(建立 printk 缓冲);
(3)建立 LOG 处理线程 t_log 并初始化。
2、分析
2.1 t_log 线程分析
(1) 调用函数 API_MsgQueueReceive 从消息队列接收消息;
(2)判断是任务中发送,还是中断中发送,根据是否打印头部的参数,选择是否打印头部信息;
(3)调用函数 __logPrintk 或者 __logPrintf 打印数据;
(4)更新 _G_iLogMsgsLost 值,即丢失的 log 消息数量。