#include "kernel_impl.h"
#include "task.h"
#include <log_output.h>
関数 | |
static intptr_t | get_tskid (intptr_t info) |
static intptr_t | get_tskstat (intptr_t info) |
static void | trace_print (TRACE *p_trace, void(*putc)(char_t)) |
void | trace_dump (intptr_t exinf) |
static intptr_t get_tskid | ( | intptr_t | info | ) | [static] |
trace_dump.c の 53 行で定義されています。
参照元 trace_print().
00054 { 00055 TCB *p_tcb; 00056 ID tskid; 00057 00058 p_tcb = (TCB *) info; 00059 if (p_tcb == NULL) { 00060 tskid = 0; 00061 } 00062 else { 00063 tskid = TSKID(p_tcb); 00064 } 00065 return((intptr_t) tskid); 00066 }
static intptr_t get_tskstat | ( | intptr_t | info | ) | [static] |
trace_dump.c の 69 行で定義されています。
参照先 TS_DORMANT, TS_RUNNABLE, TS_SUSPENDED, と TS_WAITING.
参照元 trace_print().
00070 { 00071 uint_t tstat; 00072 const char *tstatstr; 00073 00074 tstat = (uint_t) info; 00075 switch (tstat & (TS_RUNNABLE|TS_WAITING|TS_SUSPENDED)) { 00076 case TS_DORMANT: 00077 tstatstr = "DORMANT"; 00078 break; 00079 case TS_RUNNABLE: 00080 tstatstr = "RUNNABLE"; 00081 break; 00082 case TS_WAITING: 00083 tstatstr = "WAITING"; 00084 break; 00085 case TS_SUSPENDED: 00086 tstatstr = "SUSPENDED"; 00087 break; 00088 case TS_WAITING|TS_SUSPENDED: 00089 tstatstr = "WAITING-SUSPENDED"; 00090 break; 00091 default: 00092 tstatstr = "unknown state"; 00093 break; 00094 } 00095 return((intptr_t) tstatstr); 00096 }
void trace_dump | ( | intptr_t | exinf | ) |
trace_dump.c の 146 行で定義されています。
参照先 trace_print(), と trace_rea_log().
00147 { 00148 TRACE trace; 00149 void (*putc)(char_t); 00150 00151 putc = (void (*)(char_t)) exinf; 00152 while (trace_rea_log(&trace) >= 0) { 00153 trace_print(&trace, putc); 00154 } 00155 }
trace_dump.c の 102 行で定義されています。
参照先 get_tskid(), get_tskstat(), LOG_LEAVE, LOG_TYPE_ASSERT, LOG_TYPE_COMMENT, LOG_TYPE_DSP, LOG_TYPE_TSKSTAT, SYSLOG::loginfo, SYSLOG::logtim, SYSLOG::logtype, syslog_printf(), と TMAX_LOGINFO.
参照元 trace_dump().
00103 { 00104 intptr_t traceinfo[TMAX_LOGINFO + 1]; 00105 const char *tracemsg; 00106 int_t i; 00107 00108 traceinfo[0] = (intptr_t)(p_trace->logtim); 00109 syslog_printf("[%d] ", traceinfo, putc); 00110 00111 switch (p_trace->logtype) { 00112 case LOG_TYPE_TSKSTAT: 00113 traceinfo[0] = get_tskid(p_trace->loginfo[0]); 00114 traceinfo[1] = get_tskstat(p_trace->loginfo[1]); 00115 tracemsg = "task %d becomes %s."; 00116 break; 00117 case LOG_TYPE_DSP|LOG_LEAVE: 00118 traceinfo[0] = get_tskid(p_trace->loginfo[0]); 00119 tracemsg = "dispatch to task %d."; 00120 break; 00121 case LOG_TYPE_COMMENT: 00122 for (i = 1; i < TMAX_LOGINFO; i++) { 00123 traceinfo[i-1] = p_trace->loginfo[i]; 00124 } 00125 tracemsg = (const char *)(p_trace->loginfo[0]); 00126 break; 00127 case LOG_TYPE_ASSERT: 00128 traceinfo[0] = p_trace->loginfo[0]; 00129 traceinfo[1] = p_trace->loginfo[1]; 00130 traceinfo[2] = p_trace->loginfo[2]; 00131 tracemsg = "%s:%u: Assertion `%s' failed."; 00132 break; 00133 default: 00134 traceinfo[0] = p_trace->logtype; 00135 tracemsg = "unknown trace log type: %d."; 00136 break; 00137 } 00138 syslog_printf(tracemsg, traceinfo, putc); 00139 (*putc)('\n'); 00140 }
Copyright © 2008 by Kijineko Inc.