vxWorks中的logMsg机制的实现

本文探讨了vxWorks操作系统中的logMsg机制,详细解析了其实现原理,通过函数调用链展示了其内部工作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vxWorks中打印时可以使用log_msg来进行打印,当然了这是系统启动后才可以使用的。
这其实就是定义了一个全局的信息队列,当调用log_msg时,信息就写入到这个队列中,然后相关的信息就会被打印出来。


先看一下这个队列被实现的函数调用:

usrRoot-->logInit

STATUS logInit
    (
    int fd,             /*信息被输出到那里,一般h就死指向console设备*/
    int maxMsgs         /*队列最多可以设置的信息数量*/
    )
    {
/*创建这个存储信息的队列*/
    logMsgQId = msgQCreate (maxMsgs, sizeof (LOG_MSG), MSG_Q_FIFO);
/*创建一个任务logTask,专门处理这些任务*/
    logTaskId = taskSpawn ("tLogTask", logTaskPriority,
			   logTaskOptions, logTaskStackSize,
			   (FUNCPTR)logTask, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

/*初始化一个信号量*/
    semMInit (&logFdSem, mutexOptionsLogLib);
/*设置最后信息输出时,输出到那里,这里的fd时文件描述符*/
    logFdSet (fd);
/*向 logMsgQId发送信息的函数*/
    _func_logMsg = (FUNCPTR) logMsg;

    return (OK);
    }
这下初始化就完成了,在看一下处理信息的任务,以及增加信息和处理信息的函数。
/*任务logTask*/
void lo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值