📄 dbcmd.c
字号:
return (int*)&tmpbuf;
}
//***********************************************************************
// 3.2 Control Block Data (call cyc)
// This function is called from db33.This iprint_cyc command prints
// ROS33 cyclic handler control block data.
//***********************************************************************
int *iprint_cyc(int arg1, int arg2, int arg3)
{
T_HNDRCB* pHndrcb;
int i;
char actchar[4];
rtncode = chk_param(arg1, arg2, CYCHNDR_NUM);
if(rtncode < 0){
cnt = sprintf(tmpbuf.buf,"NONE\n");
tmpbuf.size = cnt+1; /* +1 is null */
return (int*)&tmpbuf;
}
if(rtncode == 0){
cnt = sprintf(tmpbuf.buf,"NO PC ACT CYCLETIME ENTRYTIME ST\n");
tmpbuf.size = cnt;
for(i = stano; i <= endno; i++){
if(chk_prtbuf(100) < 0) break;
pHndrcb = (T_HNDRCB*)&g_sCycHndrcb[i-1];
if(pHndrcb->fpPC == 0){ /* not def_cyc */
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"%-3d (NONE)\n", i);
tmpbuf.size += cnt;
}else{
switch(pHndrcb->cycact){ /* get actchar */
case TCY_OFF: strcpy(actchar, "OFF"); break;
case TCY_ON: strcpy(actchar, "ON "); break;
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"%-3d %08x %s %04x %08x %04x %08x %u\n", i, pHndrcb->fpPC,
actchar, pHndrcb->Iniutime, pHndrcb->Iniltime, pHndrcb->utime,
pHndrcb->ltime, pHndrcb->ubHndrStat);
tmpbuf.size += cnt;
}
}
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
tmpbuf.size = 0; /* init size */
for(i = stano; i <= endno; i++){
if(chk_prtbuf(256) < 0) break;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"*** CYCNO = %d\n", i);
tmpbuf.size += cnt;
pHndrcb = (T_HNDRCB*)&g_sCycHndrcb[i-1];
if(pHndrcb->fpPC == 0){ /* not def_cyc */
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"(NONE)\n");
tmpbuf.size += cnt;
}else{
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"hndrcb adr. :%08x\n", pHndrcb);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"handler pc :%08x\n",
pHndrcb->fpPC);
tmpbuf.size += cnt;
switch(pHndrcb->cycact){ /* get actchar */
case TCY_OFF: strcpy(actchar, "OFF"); break;
case TCY_ON: strcpy(actchar, "ON "); break;
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"cycact :%s\n", actchar);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"cycle time :%04x %08x\n",
pHndrcb->Iniutime, pHndrcb->Iniltime);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"entry time :%04x %08x\n",
pHndrcb->utime, pHndrcb->ltime);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"def status :%u\n",
pHndrcb->ubHndrStat);
tmpbuf.size += cnt;
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"\n");
tmpbuf.size += cnt;
}
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
//***********************************************************************
// 3.3 Control Block Data (call alm)
// This function is called from db33.This iprint_alm command prints
// ROS33 alarm handler control block data.
//***********************************************************************
int *iprint_alm(int arg1, int arg2, int arg3)
{
T_HNDRCB* pHndrcb;
int i;
char modchar[4];
rtncode = chk_param(arg1, arg2, ALMHNDR_NUM);
if(rtncode < 0){
cnt = sprintf(tmpbuf.buf,"NONE\n");
tmpbuf.size = cnt+1; /* +1 is null */
return (int*)&tmpbuf;
}
if(rtncode == 0){
cnt = sprintf(tmpbuf.buf,
"NO PC TMMODE ALARMTIME ENTRYTIME ST\n");
tmpbuf.size = cnt;
for(i = stano; i <= endno; i++){
if(chk_prtbuf(100) < 0) break;
pHndrcb = (T_HNDRCB*)&g_sAlmHndrcb[i-1];
if(pHndrcb->fpPC == 0){ /* not def_alm */
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"%-3d (NONE)\n", i);
tmpbuf.size += cnt;
}else{
switch(pHndrcb->tmmode){ /* get tmmpde char */
case TTM_ABS: strcpy(modchar, "ABS"); break;
case TTM_REL: strcpy(modchar, "REL"); break;
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,
"%-3d %08x %s %04x %08x %04x %08x %u\n", i, pHndrcb->fpPC,
modchar, pHndrcb->Iniutime, pHndrcb->Iniltime, pHndrcb->utime,
pHndrcb->ltime, pHndrcb->ubHndrStat);
tmpbuf.size += cnt;
}
}
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
tmpbuf.size = 0; /* init size */
for(i = stano; i <= endno; i++){
if(chk_prtbuf(256) < 0) break;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"*** ALMNO = %d\n", i);
tmpbuf.size += cnt;
pHndrcb = (T_HNDRCB*)&g_sAlmHndrcb[i-1];
if(pHndrcb->fpPC == 0){ /* not def_alm */
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"(NONE)\n");
tmpbuf.size += cnt;
}else{
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"hndrcb adr. :%08x\n", pHndrcb);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"handler pc :%08x\n",
pHndrcb->fpPC);
tmpbuf.size += cnt;
switch(pHndrcb->tmmode){ /* get tmmode char */
case TTM_ABS: strcpy(modchar, "ABS"); break;
case TTM_REL: strcpy(modchar, "REL"); break;
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"time mode :%s\n", modchar);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"alarm time :%04x %08x\n",
pHndrcb->Iniutime, pHndrcb->Iniltime);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"entry time :%04x %08x\n",
pHndrcb->utime, pHndrcb->ltime);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"def status :%u\n",
pHndrcb->ubHndrStat);
tmpbuf.size += cnt;
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"\n");
tmpbuf.size += cnt;
}
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
//***********************************************************************
// 3.4 Control Block Data (call mbx)
// This function is called from db33.This iprint_mbx command prints
// ROS33 mail box control block data.
//***********************************************************************
int *iprint_mbx(int arg1, int arg2, int arg3)
{
T_MLBXCB* pMlbxcb;
int i;
char msgmark[2];
char msgchar[13];
rtncode = chk_param(arg1, arg2, MLBX_NUM);
if(rtncode < 0){
cnt = sprintf(tmpbuf.buf,"NONE\n");
tmpbuf.size = cnt+1; /* +1 is null */
return (int*)&tmpbuf;
}
if(rtncode == 0){
cnt = sprintf(tmpbuf.buf,"ID MSG QUEUE\n");
tmpbuf.size = cnt;
for(i = stano; i <= endno; i++){
if(chk_prtbuf(80) < 0) break;
pMlbxcb = (T_MLBXCB*)&g_sMlbxcb[i-1];
if(pMlbxcb->pMsg == 0){ /* set message mark(-,*) */
strcpy(msgmark, "-");
}else{
strcpy(msgmark, "*");
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"%-3d %s ", i, msgmark);
tmpbuf.size += cnt;
print_queue((T_NODE*)&g_sMlbxcb[i-1]);
}
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
tmpbuf.size = 0; /* init size */
for(i = stano; i <= endno; i++){
if(chk_prtbuf(256) < 0) break;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"*** MBXID = %d\n", i);
tmpbuf.size += cnt;
pMlbxcb = (T_MLBXCB*)&g_sMlbxcb[i-1];
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"mlbxcb adr. :%08x\n", pMlbxcb);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"wait queue :");
tmpbuf.size += cnt;
print_queue((T_NODE*)&g_sMlbxcb[i-1]);
pMlbxcb = (T_MLBXCB*)&g_sMlbxcb[i-1];
if(pMlbxcb->pMsg == 0){ /* set message char */
strcpy(msgchar, "NONE MESSAGE");
}else{
strcpy(msgchar, "MESSAGE");
}
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"msg list :%s\n", msgchar);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"\n");
tmpbuf.size += cnt;
}
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
//***********************************************************************
// 3.5 Control Block Data (call sem)
// This function is called from db33.This iprint_sem command prints
// ROS33 semaphore control block data.
//***********************************************************************
int *iprint_sem(int arg1, int arg2, int arg3)
{
T_SMPHCB* pSmphcb;
int i;
rtncode = chk_param(arg1, arg2, SMPH_NUM);
if(rtncode < 0){
cnt = sprintf(tmpbuf.buf,"NONE\n");
tmpbuf.size = cnt+1; /* +1 is null */
return (int*)&tmpbuf;
}
if(rtncode == 0){
cnt = sprintf(tmpbuf.buf,"ID MAX CNT QUEUE\n");
tmpbuf.size = cnt;
for(i = stano; i <= endno; i++){
if(chk_prtbuf(80) < 0) break;
pSmphcb = (T_SMPHCB*)&g_sSmphcb[i-1];
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"%-3d %-3u %-3u ",
i, pSmphcb->ubSmphMax, pSmphcb->ubSmphCnt);
tmpbuf.size += cnt;
print_queue((T_NODE*)&g_sSmphcb[i-1]);
}
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
tmpbuf.size = 0; /* init size */
for(i = stano; i <= endno; i++){
if(chk_prtbuf(256) < 0) break;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"*** SEMID = %d\n", i);
tmpbuf.size += cnt;
pSmphcb = (T_SMPHCB*)&g_sSmphcb[i-1];
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"smphcb adr. :%08x\n", pSmphcb);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"wait queue :");
tmpbuf.size += cnt;
print_queue((T_NODE*)&g_sSmphcb[i-1]);
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"max counter :%u\n",
pSmphcb->ubSmphMax);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"sem counter :%u\n",
pSmphcb->ubSmphCnt);
tmpbuf.size += cnt;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"\n");
tmpbuf.size += cnt;
}
tmpbuf.size ++; /* ++ is null */
return (int*)&tmpbuf;
}
//***********************************************************************
// 3.6 Control Block Data (call flg)
// This function is called from db33.This iprint_flg command prints
// ROS33 eventflag control block data.
//***********************************************************************
int *iprint_flg(int arg1, int arg2, int arg3)
{
T_FLGCB* pFlgcb;
int i;
int waimod;
char flgchar[11];
rtncode = chk_param(arg1, arg2, FLG_NUM);
if(rtncode < 0){
cnt = sprintf(tmpbuf.buf,"NONE\n");
tmpbuf.size = cnt+1; /* +1 is null */
return (int*)&tmpbuf;
}
if(rtncode == 0){
cnt = sprintf(tmpbuf.buf,"ID QUEUE\n");
tmpbuf.size = cnt;
for(i = stano; i <= endno; i++){
if(chk_prtbuf(80) < 0) break;
cnt = sprintf(tmpbuf.buf+tmpbuf.size,"%-3d ", i);
tmpbuf.size += cnt;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -