📄 dbcmd.c
字号:
}
cnt = sprintf(tmpbuf.buf,"PRI ADDRESS QUEUE\n");
tmpbuf.size = cnt;
for(i = stano; i <= endno; i++){
if(chk_prtbuf(80) < 0) break;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"%d %08x ", i,&g_sReadyQueue[i-1]);
tmpbuf.size += cnt;
/* print queue list */
print_queue((T_NODE*)&g_sReadyQueue[i-1]);
}
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
//***********************************************************************
// 2.2 Queue List Data (call tmo)
// This function is called from db33.This iprint_tmo command prints
// ROS33 timeout queue list data.
//***********************************************************************
int *iprint_tmo(int arg1, int arg2, int arg3)
{
T_NODE* pTskcb;
T_TSKCB* pTskcb2;
int i;
int iniflg, waitflg;
char statchar[5];
cnt = sprintf(tmpbuf.buf,"TIMEOUT(ADR:%08x)", &g_sTimeOutTsk);
tmpbuf.size = cnt;
pTskcb = ((T_NODE*)&g_sTimeOutTsk)->pNxt; /* get next address */
iniflg = 0;
while(pTskcb != (T_NODE*)&g_sTimeOutTsk){ /* if next is head */
i = 0; /* search task(i) */
while((T_NODE*)&g_sTskcb[i] != (T_NODE*)((char*)pTskcb -8)){
i++;
if(i == TSK_NUM){
i = 0; /* not found(illegal) */
break;
}
}
if(iniflg == 0){ /* display head task */
cnt = sprintf(tmpbuf.buf+tmpbuf.size," task%d", i+1);
tmpbuf.size += cnt;
iniflg = 1;
}else{ /* display continue task */
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"->task%d", i+1);
tmpbuf.size += cnt;
}
pTskcb2 = (T_TSKCB*)((char*)pTskcb - 8); /* get task address */
print_status(STID_TSK, pTskcb2); /* get wait status(waichar) */
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"(%s)", waichar);
tmpbuf.size += cnt;
pTskcb = pTskcb->pNxt; /* get next address */
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"\n");
tmpbuf.size += cnt;
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
//***********************************************************************
// 2.3 Queue List Data (call rdh)
// This function is called from db33.This iprint_rdh command prints
// ROS33 handler ready queue list data.
//***********************************************************************
int *iprint_rdh(int arg1, int arg2, int arg3)
{
cnt = sprintf(tmpbuf.buf,"READYHNDLER(ADR:%08x)", &g_sReadyHndr);
tmpbuf.size = cnt;
/* print queue list */
print_hndrque((T_NODE*)&g_sReadyHndr);
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
//***********************************************************************
// 2.4 Queue List Data (call tmh)
// This function is called from db33.This iprint_tmh command prints
// ROS33 timer handler queue list data.
//***********************************************************************
int *iprint_tmh(int arg1, int arg2, int arg3)
{
cnt = sprintf(tmpbuf.buf,"TIMEHNDLER(ADR:%08x)", &g_sTimeHndr);
tmpbuf.size = cnt;
/* print queue list */
print_hndrque((T_NODE*)&g_sTimeHndr);
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
//***********************************************************************
// 3.1 Control Block Data (call tsk)
// This function is called from db33.This iprint_cyc command prints
// ROS33 task control block data.
//***********************************************************************
int *iprint_tsk(int arg1, int arg2, int arg3)
{
T_TSKCB* pTskcb;
FP fpPCwk;
UW uwSPwk;
UW regwk[4];
int i, j;
rtncode = chk_param(arg1, arg2, TSK_NUM);
if(rtncode < 0){ /* illigal paramater */
cnt = sprintf(tmpbuf.buf,"NONE\n");
tmpbuf.size = cnt+1; /* +1 is null */
return (int*)&tmpbuf;
}
if(rtncode == 0){ /* all display */
cnt = sprintf(tmpbuf.buf,"TID PC SP STA WS PRI WC TIMEOUT\n");
tmpbuf.size = cnt;
for(i = stano; i <= endno; i++){
if(chk_prtbuf(100) < 0) break;
pTskcb = (T_TSKCB*)&g_sTskcb[i-1];
if(pTskcb->fpPC == 0){ /* not vcre_tsk */
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"%-3d (NONE)\n", i);
tmpbuf.size += cnt;
}else{
print_status(STID_TSK, pTskcb); /* get task,wait status */
/* (tskchar,waichar) */
if(taskflag < 2){ /* case DMT,RUN */
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"%-3d -------- -------- %3s %-4s %d %2u %04x %08x\n",
i, tskchar, waichar, pTskcb->bPriority+1,
pTskcb->uhWupcnt, pTskcb->utime, pTskcb->ltime);
tmpbuf.size += cnt;
}
else{
uwSPwk = pTskcb->uwSP; /* display SP */
if(pTskcb->ubIntinfo == 0) /* get PC in stack */
{
fpPCwk = ((T_SAVEDREG_MIN*)uwSPwk)->pc;
}
else{
fpPCwk = ((T_SAVEDREG*)uwSPwk)->pc;
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"%-3d %08x %08x %3s %-4s %d %2u %04x %08x\n",
i, fpPCwk, uwSPwk, tskchar, waichar, pTskcb->bPriority+1,
pTskcb->uhWupcnt, pTskcb->utime, pTskcb->ltime);
tmpbuf.size += cnt;
}
}
}
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
tmpbuf.size = 0; /* init size */
for(i = stano; i <= endno; i++){
if(chk_prtbuf(512) < 0) break;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"*** TSKID = %d\n", i);
tmpbuf.size += cnt;
pTskcb = (T_TSKCB*)&g_sTskcb[i-1];
if(pTskcb->fpPC == 0){ /* not vcre_tsk */
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"(NONE)\n");
tmpbuf.size += cnt;
}else{
print_status(STID_TSK, pTskcb); /* get task,wait status */
/* (tskchar,waichar) */
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"tskcb adr. :%08x\n", pTskcb);
tmpbuf.size += cnt;
if(taskflag > 1){ /* case RDY,SUS,WAI,WAS */
uwSPwk = pTskcb->uwSP; /* get PC in stack and display */
if(pTskcb->ubIntinfo == 0){
fpPCwk = ((T_SAVEDREG_MIN*)uwSPwk)->pc;
}else{
fpPCwk = ((T_SAVEDREG*)uwSPwk)->pc;
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"pc :%08x\n", fpPCwk);
tmpbuf.size += cnt;
}else{ /* case DMT,RUN */
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"pc :--------\n");
tmpbuf.size += cnt;
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"initial pc :%08x\n",
pTskcb->fpPC);
tmpbuf.size += cnt;
if(taskflag > 1){ /* case RDY,SUS,WAI,WAS */
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"sp :%08x\n",
pTskcb->uwSP);
tmpbuf.size += cnt;
}else{ /* case DMT,RUN */
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"sp :--------\n");
tmpbuf.size += cnt;
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"initial sp :%08x\n",
pTskcb->uwIniSP);
tmpbuf.size += cnt;
if(taskflag > 1){ /* case RDY,SUS,WAI,WAS */
uwSPwk = pTskcb->uwSP; /* display regster in stack */
if(pTskcb->ubIntinfo == 0){ /* %r0-%r3 display */
for( j = 0; j < 4; j++){
regwk[j] = ((T_SAVEDREG_MIN*)uwSPwk)->r[j];
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"reg r0-r3 :%08x %08x %08x %08x\n",
regwk[0], regwk[1], regwk[2], regwk[3]);
tmpbuf.size += cnt;
}else{ /* %r0-%r15,%ahr,%alr display */
for( j = 0; j < 4; j++){
regwk[j] = ((T_SAVEDREG*)uwSPwk)->r[j];
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"reg r0-r3 :%08x %08x %08x %08x\n",
regwk[0], regwk[1], regwk[2], regwk[3]);
tmpbuf.size += cnt;
for( j = 0; j < 4; j++){
regwk[j] = ((T_SAVEDREG*)uwSPwk)->r[j+4];
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
" r4-r7 :%08x %08x %08x %08x\n",
regwk[0], regwk[1], regwk[2], regwk[3]);
tmpbuf.size += cnt;
for( j = 0; j < 4; j++){
regwk[j] = ((T_SAVEDREG*)uwSPwk)->r[j+8];
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
" r8-r11 :%08x %08x %08x %08x\n",
regwk[0], regwk[1], regwk[2], regwk[3]);
tmpbuf.size += cnt;
for( j = 0; j < 4; j++){
regwk[j] = ((T_SAVEDREG*)uwSPwk)->r[j+12];
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
" r12-r15 :%08x %08x %08x %08x\n",
regwk[0], regwk[1], regwk[2], regwk[3]);
tmpbuf.size += cnt;
regwk[0] = ((T_SAVEDREG*)uwSPwk)->ahr;
regwk[1] = ((T_SAVEDREG*)uwSPwk)->alr;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
" ahr,alr :%08x %08x\n",
regwk[0], regwk[1]);
tmpbuf.size += cnt;
}
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"task status :%s\n", tskchar);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"wait status :%s\n", waichar);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"task pri :%d\n",
pTskcb->bPriority+1);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"initial pri :%d\n",
pTskcb->bIniPriority+1);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"wakeup cnt :%u\n",
pTskcb->uhWupcnt);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"timeout :%04x %08x\n",
pTskcb->utime, pTskcb->ltime);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"int info :%u\n",
pTskcb->ubIntinfo);
tmpbuf.size += cnt;
if(taskflag > 3){ /* case WAI,WAS */
switch(pTskcb->ubWaitStat){ /* display waiting information */
case TTW_FLG:
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"### EVENTFLAG INF\n");
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"flgptn point:%08x\n", pTskcb->pFlgptn);
tmpbuf.size += cnt;
break;
case TTW_MBX:
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"### MAILBOX INF\n");
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"rcvmsg point :%08x\n", pTskcb->pMsg);
tmpbuf.size += cnt;
break;
case TTW_SMBF:
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"### SND MSGBUF INF\n");
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"sndmsg adr. :%08x\n", pTskcb->pMsgbuf);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"sndmsg size :%08x\n", pTskcb->msgsize);
tmpbuf.size += cnt;
break;
case TTW_MBF:
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"### RCV MSGBUF INF\n");
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"rcvmsg point:%08x\n", pTskcb->pMsgbuf);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"msgsiz point:%08x\n", pTskcb->msgsize);
tmpbuf.size += cnt;
break;
case TTW_MPL:
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"### VARIABLE MEMBLK INF\n");
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"blkadr point:%08x\n", pTskcb->pMplblk);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"blk size :%08x\n", pTskcb->blksize);
tmpbuf.size += cnt;
break;
case TTW_MPF:
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"### FIXED MEMBLK INF\n");
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"blkadr point:%08x\n", pTskcb->pMplblk);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"blk size :%08x\n", pTskcb->blksize);
tmpbuf.size += cnt;
break;
}
}
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"\n");
tmpbuf.size += cnt;
}
tmpbuf.size ++; /* ++ is null */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -