/* * システムログタスクの本体 */ void logtask_main(intptr_t exinf) { SYSLOG logbuf; uint_t lostlog; ER_UINT rercd; logtask_portid = (ID) exinf; (void) serial_opn_por(logtask_portid); (void) syslog_msk_log(LOG_UPTO(LOG_NOTICE), LOG_UPTO(LOG_EMERG)); syslog_1(LOG_NOTICE, "System logging task is started on port %d.", logtask_portid); for (;;) { lostlog = 0U; while ((rercd = syslog_rea_log(&logbuf)) >= 0) { lostlog += (uint_t) rercd; if (logbuf.logtype >= LOG_TYPE_COMMENT) { if (lostlog > 0U) { syslog_lostmsg(lostlog, logtask_putc); lostlog = 0U; } syslog_print(&logbuf, logtask_putc); logtask_putc('\n'); } } if (lostlog > 0U) { syslog_lostmsg(lostlog, logtask_putc); } (void) dly_tsk(LOGTASK_INTERVAL); } }
/* * システムログタスクの本体 */ void logtask_main(intptr_t exinf) { SYSLOG syslog; uint_t lost; ER_UINT rercd; ID my_logtask_portid; my_logtask_portid = (ID) exinf; set_my_logtask_portid(my_logtask_portid); serial_opn_por(my_logtask_portid); syslog_msk_log(LOG_UPTO(LOG_NOTICE), LOG_UPTO(LOG_EMERG)); syslog_1(LOG_NOTICE, "System logging task is started on port %d.", my_logtask_portid); for (;;) { lost = 0U; while ((rercd = syslog_rea_log(&syslog)) >= 0) { lost += (uint_t) rercd; if (syslog.logtype >= LOG_TYPE_COMMENT) { if (lost > 0U) { syslog_lostmsg(lost, logtask_putc); lost = 0U; } syslog_print(&syslog, logtask_putc); logtask_putc('\n'); } } if (lost > 0U) { syslog_lostmsg(lost, logtask_putc); } if(E_OK != dly_tsk(LOGTASK_INTERVAL)){ syslog_0(LOG_NOTICE, "syslog : Error dly_tsk() !"); } } }
/* * システムログの出力処理 */ void syslog_flush(void) { SYSLOG syslog; ER_UINT rercd; /* * ログバッファに記録されたログ情報を,低レベル出力機能を用いて出 * 力する. */ while ((rercd = syslog_rea_log(&syslog)) >= 0) { if (rercd > 0) { syslog_lostmsg((uint_t) rercd, target_fput_log); } if (syslog.logtype >= LOG_TYPE_COMMENT) { syslog_print(&syslog, target_fput_log); target_fput_log('\n'); } } }
/* * システムログタスクの終了処理 */ void logtask_terminate(intptr_t exinf) { char_t c; SYSLOG syslog; bool_t msgflg = false; ER_UINT rercd; ID my_logtask_portid = get_my_logtask_portid(); /* * シリアルインタフェースドライバの送信バッファに蓄積されたデータ * を,低レベル出力機能を用いて出力する. */ while (serial_get_chr(my_logtask_portid, &c)) { target_fput_log(c); } /* * ログバッファに記録されたログ情報を,低レベル出力機能を用いて出 * 力する. */ while ((rercd = syslog_rea_log(&syslog)) >= 0) { if (!msgflg) { /* * ログバッファに残ったログ情報であることを示す文字列を出 * 力する. */ syslog_printf("-- buffered messages --\n", NULL, target_fput_log); msgflg = true; } if (rercd > 0) { syslog_lostmsg((uint_t) rercd, target_fput_log); } if (syslog.logtype >= LOG_TYPE_COMMENT) { syslog_print(&syslog, target_fput_log); target_fput_log('\n'); } } }