vxWorks中的logMsg機制的實現

2021-09-14 07:06:09 字數 1508 閱讀 6488

** 

vxworks中列印時可以使用log_msg來進行列印,當然了這是系統啟動後才可以使用的。

這其實就是定義了乙個全域性的資訊佇列,當呼叫log_msg時,資訊就寫入到這個佇列中,然後相關的資訊就會被列印出來。

先看一下這個佇列被實現的函式呼叫:

usrroot-->loginit
status loginit

(int fd, /*資訊被輸出到那裡,一般h就死指向console裝置*/

int maxmsgs /*佇列最多可以設定的資訊數量*/

)

這下初始化就完成了,在看一下處理資訊的任務,以及增加資訊和處理資訊的函式。

/*任務logtask*/

void logtask (void)

else

/*否則就把任務的名字放入到tname陣列中*/

else

}/*資訊列印的格式為空,則列印格式為空*/

if (msg.fmt == null)

lprintf ("\n", 0, 0, 0, 0, 0, 0);

/*使用lprintf函式正常列印資訊*/

else

}} }

/*向佇列傳送資訊的函式*/

int logmsg

(char *fmt, /* format string for print */

int arg1, /* first of six required args for fmt */

int arg2,

int arg3,

int arg4,

int arg5,

int arg6

)else

msg.fmt = fmt;

msg.arg[0] = arg1;

msg.arg[1] = arg2;

msg.arg[2] = arg3;

msg.arg[3] = arg4;

msg.arg[4] = arg5;

msg.arg[5] = arg6;

/*向佇列傳送資訊*/

if (msgqsend (logmsgqid, (char *) &msg, sizeof (msg), timeout,

msg_pri_normal) != ok)

return (sizeof (msg));

}

local void lprintf

(char *fmt, /* format string for print */

int arg1, /* optional arguments to fmt */

int arg2,

int arg3,

int arg4,

int arg5,

int arg6

)

vxWorks中關於cdfs檔案的使用

cdfs檔案是vxworks對於元件進行配置的檔案 components description files 1,對去驅動components的巨集 drv drviertype drivername drv sio ns16550 componment include name paramter ...

vxworks的時鐘管理

時間格式 秒和納秒 struct timespec time t tv sec 秒,其中time t 為 typedef long time t long tv nsec 納秒 定時器時間格式 struct itimerspec 建立 timer create 建立乙個定時器 設定 timer se...

vxWorks中對時間的精確統計

如果支援timestamp,bsp應提供以下函式 systimestampconnect 連線時間戳中斷 systimestampenable 使能時間戳 systimestampdisable 禁止時間戳 systimestampfreq 取得時間戳的頻率 systimestampperiod 取...