Improve output from Show routines.
This commit is contained in:
committed by
Michael Davidsaver
parent
19a166a60d
commit
58d1e22e0f
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 ) {
|
||||
|
||||
Reference in New Issue
Block a user