Improve output from Show routines.

This commit is contained in:
Andrew Johnson
2012-04-27 13:21:46 -04:00
committed by Michael Davidsaver
parent 19a166a60d
commit 58d1e22e0f
5 changed files with 21 additions and 24 deletions

View File

@@ -520,24 +520,24 @@ long dbChannelPutField(dbChannel *chan, short type, const void *pbuffer,
return dbPutField(&chan->addr, type, pbuffer, nRequest);
}
void dbChannelShow(dbChannel *chan, int level)
void dbChannelShow(dbChannel *chan, const char *intro, int level)
{
long elems = chan->addr.no_elements;
int count = ellCount(&chan->filters);
printf("dbChannel name: %s\n", chan->name);
printf("%schannel name: %s\n", intro, chan->name);
/* FIXME: show field_type as text */
printf(" field_type = %d, %ld element%s, %d filter%s\n",
chan->addr.field_type, elems, elems == 1 ? "" : "s",
printf("%s field_type=%d, %ld element%s, %d filter%s\n",
intro, chan->addr.field_type, elems, elems == 1 ? "" : "s",
count, count == 1 ? "" : "s");
if (level > 0)
dbChannelFilterShow(chan, level - 1);
dbChannelFilterShow(chan, intro, level - 1);
}
void dbChannelFilterShow(dbChannel *chan, int level)
void dbChannelFilterShow(dbChannel *chan, const char *intro, int level)
{
chFilter *filter = (chFilter *) ellFirst(&chan->filters);
while (filter) {
filter->fif->channel_report(filter, level);
filter->fif->channel_report(filter, intro, level);
filter = (chFilter *) ellNext(&filter->node);
}
}

View File

@@ -68,7 +68,7 @@ typedef struct chFilterIf {
/* Channel operations: */
long (* channel_open)(chFilter *filter);
void (* channel_report)(chFilter *filter, int level);
void (* channel_report)(chFilter *filter, const char *intro, int level);
/* FIXME: More filter routines here ... */
void (* channel_close)(chFilter *filter);
} chFilterIf;
@@ -104,8 +104,10 @@ epicsShareFunc long dbChannelPut(dbChannel *chan, short type,
const void *pbuffer, long nRequest);
epicsShareFunc long dbChannelPutField(dbChannel *chan, short type,
const void *pbuffer, long nRequest);
epicsShareFunc void dbChannelShow(dbChannel *chan, int level);
epicsShareFunc void dbChannelFilterShow(dbChannel *chan, int level);
epicsShareFunc void dbChannelShow(dbChannel *chan, const char *intro,
int level);
epicsShareFunc void dbChannelFilterShow(dbChannel *chan, const char *intro,
int level);
epicsShareFunc void dbChannelDelete(dbChannel *chan);
epicsShareFunc void dbRegisterFilter(const char *key, const chFilterIf *fif);

View File

@@ -160,7 +160,7 @@ void dbChannelIO::show (
dbChannelElements ( this->dbch ),
dbChannelField ( this->dbch ) );
if ( level > 1u ) {
dbChannelFilterShow ( this->dbch, level - 2u );
dbChannelFilterShow ( this->dbch, "\t", level - 2u );
this->serviceIO.show ( level - 2u );
this->serviceIO.showAllIO ( *this, level - 2u );
}

View File

@@ -114,9 +114,9 @@ long c_open(chFilter *filter)
testOk(e & e_open, "channel_open called");
return 0;
}
void c_report(chFilter *filter, int level)
void c_report(chFilter *filter, const char *intro, int level)
{
testOk(e & e_report, "channel_report called, level = %d", level);
testOk(e & e_report, "%s channel_report called, level = %d", level);
}
void c_close(chFilter *filter)
{
@@ -196,7 +196,7 @@ MAIN(dbChannelTest)
testOk1(!!(pch = dbChannelCreate("x.{\"scalar\":null}")));
e = e_report;
dbChannelShow(pch, 1);
dbChannelShow(pch, "# ", 1);
e = e_close;
if (pch) dbChannelDelete(pch);

View File

@@ -349,22 +349,18 @@ static unsigned countChanListBytes (
}
static void showChanList (
struct client * client, ELLLIST * pList )
struct client * client, unsigned level, ELLLIST * pList )
{
unsigned i = 0u;
struct channel_in_use * pciu;
epicsMutexMustLock ( client->chanListLock );
pciu = (struct channel_in_use *) pList->node.next;
while ( pciu ){
printf( "\t%s (%d%c%c)",
dbChannelName(pciu->dbch),
dbChannelShow ( pciu->dbch, "\t", level );
printf( "\t # on eventq=%d, access=%c%c\n",
ellCount ( &pciu->eventq ),
asCheckGet ( pciu->asClientPVT ) ? 'r': '-',
rsrvCheckPut ( pciu ) ? 'w': '-' );
pciu = ( struct channel_in_use * ) ellNext ( &pciu->node );
if( ++i % 3u == 0u ) {
printf ( "\n" );
}
}
epicsMutexUnlock ( client->chanListLock );
}
@@ -432,9 +428,8 @@ static void log_one_client (struct client *client, unsigned level)
bytes_reserved += countChanListBytes (
client, & client->chanPendingUpdateARList );
printf( "\t%d bytes allocated\n", bytes_reserved);
showChanList ( client, & client->chanList );
showChanList ( client, & client->chanPendingUpdateARList );
printf("\n");
showChanList ( client, level - 2u, & client->chanList );
showChanList ( client, level - 2u, & client->chanPendingUpdateARList );
}
if ( level >= 3u ) {