int epicsShareAPI logAlarmsReport ( int interest ) { char inetAddr[32]; int serverId; if (!initialized) { printf ("logAlarms utility is not initialized! Use logAlarmsInit.\n"); return OK; } printf ("logAlarmsReport! use level parameter of [0..4]\n"); printf ("\n%d servers are configured\n", numServersConfigured); printf ("%d messages have been lost\n", msgLost); if (serverSelected >= 0) printf ("\nThe server number %d is selected\n", serverSelected); else printf ("\nNo server is selected\n"); if (interest > 0 && numServersConfigured > 0) { if (numServersConfigured > 0) printf ("\nConfigured Servers\n"); for (serverId=0; serverId < numServersConfigured; serverId++) { ipAddrToA (&msgServerAddr[serverId], inetAddr, 32); printf ("Server %d: %s ", serverId, inetAddr); if (serverId == serverSelected) printf ("selected + "); if (serverStatus[serverId].up) printf ("online\n"); else printf ("offline\n"); } printf ("\nMessage port: %d Command port: %d\n", msg_port, cmd_port); } if (interest > 1) { printf ("\nRing buffer size is %d messages\n", ringSize); printf ("Ring base area is %d messages, extention is %d\n", ringHighWater, ringSize - ringHighWater); } printf ("\nRing buffer usage: %ld messages are waiting in the ring buffer\n", (long)RINGPOS(pRingWrite)); if (interest > 3) { printf ("\nRing address is 0x%lx\n", (unsigned long)pRingBottom); printf ("Read pointer: 0x%lx Write pointer: 0x%lx\n", (unsigned long)pRingRead, (unsigned long)pRingWrite); printf ("\nTiming: Initial wait time: %ld ticks\n", tickInitWait); printf (" Max time between beacons: %ld ticks\n", tickMaxSilent); printf (" Timeout waiting for message replies: %ld ticks\n", tickMessageReplyTmo); printf (" Timeout waiting for beacon replies: %ld ticks\n", tickBeaconReplyTmo); } if (interest > 2) { printf ("\nThe hash facility to find messages in the ring buffer:\n"); if (pbuck) bucketShow (pbuck); else printf ("Hash table not created\n"); } return OK; }
/* * casr() */ void epicsShareAPI casr (unsigned level) { size_t bytes_reserved; struct client *client; if ( ! clientQlock ) { return; } printf ("Channel Access Server V%s\n", CA_VERSION_STRING ( CA_MINOR_PROTOCOL_REVISION ) ); LOCK_CLIENTQ client = (struct client *) ellNext ( &clientQ.node ); if (client) { printf("Connected circuits:\n"); } else { printf("No clients connected.\n"); } while (client) { log_one_client(client, level); client = (struct client *) ellNext(&client->node); } UNLOCK_CLIENTQ if (level>=2 && prsrv_cast_client) { printf( "UDP Server:\n" ); log_one_client(prsrv_cast_client, level); } if (level>=2u) { bytes_reserved = 0u; bytes_reserved += sizeof (struct client) * freeListItemsAvail (rsrvClientFreeList); bytes_reserved += sizeof (struct channel_in_use) * freeListItemsAvail (rsrvChanFreeList); bytes_reserved += sizeof(struct event_ext) * freeListItemsAvail (rsrvEventFreeList); bytes_reserved += MAX_TCP * freeListItemsAvail ( rsrvSmallBufFreeListTCP ); bytes_reserved += rsrvSizeofLargeBufTCP * freeListItemsAvail ( rsrvLargeBufFreeListTCP ); bytes_reserved += rsrvSizeOfPutNotify ( 0 ) * freeListItemsAvail ( rsrvPutNotifyFreeList ); printf( "There are currently %u bytes on the server's free list\n", (unsigned int) bytes_reserved); printf( "%u client(s), %u channel(s), %u event(s) (monitors) %u putNotify(s)\n", (unsigned int) freeListItemsAvail ( rsrvClientFreeList ), (unsigned int) freeListItemsAvail ( rsrvChanFreeList ), (unsigned int) freeListItemsAvail ( rsrvEventFreeList ), (unsigned int) freeListItemsAvail ( rsrvPutNotifyFreeList )); printf( "%u small buffers (%u bytes ea), and %u jumbo buffers (%u bytes ea)\n", (unsigned int) freeListItemsAvail ( rsrvSmallBufFreeListTCP ), MAX_TCP, (unsigned int) freeListItemsAvail ( rsrvLargeBufFreeListTCP ), rsrvSizeofLargeBufTCP ); if(pCaBucket){ printf( "The server's resource id conversion table:\n"); LOCK_CLIENTQ; bucketShow (pCaBucket); UNLOCK_CLIENTQ; } printf ( "The server's array size limit is %u bytes max\n", rsrvSizeofLargeBufTCP ); printChannelAccessAddressList (&beaconAddrList); } }