From 58d1e22e0f14349f8ce8b60f4783d4e26d34a77f Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Fri, 27 Apr 2012 13:21:46 -0400 Subject: [PATCH] Improve output from Show routines. --- src/ioc/db/dbChannel.c | 14 +++++++------- src/ioc/db/dbChannel.h | 8 +++++--- src/ioc/db/dbChannelIO.cpp | 2 +- src/ioc/db/test/dbChannelTest.c | 6 +++--- src/ioc/rsrv/caservertask.c | 15 +++++---------- 5 files changed, 21 insertions(+), 24 deletions(-) diff --git a/src/ioc/db/dbChannel.c b/src/ioc/db/dbChannel.c index f88f55a83..f87e0359b 100644 --- a/src/ioc/db/dbChannel.c +++ b/src/ioc/db/dbChannel.c @@ -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); } } diff --git a/src/ioc/db/dbChannel.h b/src/ioc/db/dbChannel.h index dc51c83e5..f7d7c651a 100644 --- a/src/ioc/db/dbChannel.h +++ b/src/ioc/db/dbChannel.h @@ -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); diff --git a/src/ioc/db/dbChannelIO.cpp b/src/ioc/db/dbChannelIO.cpp index e9afafb83..c1da6b920 100644 --- a/src/ioc/db/dbChannelIO.cpp +++ b/src/ioc/db/dbChannelIO.cpp @@ -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 ); } diff --git a/src/ioc/db/test/dbChannelTest.c b/src/ioc/db/test/dbChannelTest.c index 1f45b5253..9c4ebc91b 100644 --- a/src/ioc/db/test/dbChannelTest.c +++ b/src/ioc/db/test/dbChannelTest.c @@ -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); diff --git a/src/ioc/rsrv/caservertask.c b/src/ioc/rsrv/caservertask.c index febd74f49..1d0b5f3e7 100644 --- a/src/ioc/rsrv/caservertask.c +++ b/src/ioc/rsrv/caservertask.c @@ -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 ) {