vxWorks中打印时可以使用log_msg来进行打印,当然了这是系统启动后才可以使用的。
这其实就是定义了一个全局的信息队列,当调用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