/**************************************************************** * * * Copyright 2001, 2012 Fidelity Information Services, Inc * * * * This source code contains the intellectual property * * of its copyright holder(s), and is made available * * under a license. If you do not know the terms of * * the license, please stop and do not read further. * * * ****************************************************************/ /* * gtcm_dmpstat.c --- * * * */ #ifndef lint static char rcsid[] = "$Header:$"; #endif #include "mdef.h" #include #include #include "gtm_stdio.h" #include "gtm_time.h" #include "gtcm.h" #include "eintr_wrappers.h" #include "gtmio.h" #include "have_crit.h" #ifdef __MVS__ #include "gtm_stat.h" #include "gtm_zos_io.h" #endif int gtcm_dmpstat(int sig) { extern omi_conn_ll *omi_conns; extern int omi_pid; extern int4 omi_nxact; extern int4 omi_nxact2; extern int4 omi_nerrs; extern int4 omi_brecv; extern int4 omi_bsent; extern int4 gtcm_stime; /* start time for GT.CM */ extern int4 gtcm_ltime; /* last time stats were gathered */ FILE *fp; time_t t; time_t uptime, uphours, upmins, upsecs; time_t itime, ihours, imins, isecs; int status; #ifdef __MVS__ int tag_status; tag_status = gtm_zos_create_tagged_file(GTCM_STAT, TAG_EBCDIC); #endif if (!(fp = Fopen(GTCM_STAT, "a"))) return -1; t = time((time_t *)0); uptime = t - gtcm_stime; uphours = uptime / 3600; upmins = (uptime % 3600) / 60; upsecs = uptime % 60; itime = t - gtcm_ltime; ihours = itime / 3600; imins = (itime % 3600) / 60; isecs = itime % 60; FPRINTF(fp, "%s", GTM_CTIME(&t)); OMI_DBG((omi_debug, "%s", GTM_CTIME(&t))); FPRINTF(fp, "%d\n", omi_pid); OMI_DBG((omi_debug, "%d\n", omi_pid)); FPRINTF(fp, "Up time: %ld:%.2ld:%.2ld\n",uphours,upmins,upsecs); OMI_DBG((omi_debug, "Up time: %ld:%.2ld:%.2ld\n",uphours,upmins,upsecs)); if (uptime != itime) { FPRINTF(fp, "Time since last stat dump: %ld:%.2ld:%.2ld\n",ihours,imins, isecs); OMI_DBG((omi_debug, "Time since last stat dump: %ld:%.2ld:%.2ld\n", ihours,imins,isecs)); } ZOS_ONLY(FPRINTF(fp, "Log file tag status : %s\n", (-1 == tag_status)?"failed":"success");) FPRINTF(fp, "Good connections: %d\n", omi_conns->stats.conn); OMI_DBG((omi_debug, "Good connections: %d\n", omi_conns->stats.conn)); FPRINTF(fp, "Bad connections: 0\n"); OMI_DBG((omi_debug, "Bad connections: 0\n")); FPRINTF(fp, "Good disconnects: %d\n", omi_conns->stats.disc - omi_conns->stats.clos); OMI_DBG((omi_debug, "Good disconnects: %d\n", omi_conns->stats.disc - omi_conns->stats.clos)); FPRINTF(fp, "Bad disconnects: %d\n", omi_conns->stats.clos); OMI_DBG((omi_debug, "Bad disconnects: %d\n", omi_conns->stats.clos)); NON_IA64_ONLY(FPRINTF(fp, "Number of transactions: %ld\n", omi_nxact)); IA64_ONLY(FPRINTF(fp, "Number of transactions: %d\n", omi_nxact)); NON_IA64_ONLY(OMI_DBG((omi_debug, "Number of transactions: %ld\n", omi_nxact))); IA64_ONLY(OMI_DBG((omi_debug, "Number of transactions: %d\n", omi_nxact))); if (uptime) { FPRINTF(fp, "Avg. transactions/sec: %ld\n", omi_nxact/uptime); OMI_DBG((omi_debug, "Avg. transactions/sec: %ld\n", omi_nxact/uptime)); } if (gtcm_stime) { NON_IA64_ONLY(FPRINTF(fp, "transactions since last stat dump: %ld\n", omi_nxact2)); IA64_ONLY(FPRINTF(fp, "transactions since last stat dump: %d\n", omi_nxact2)); NON_IA64_ONLY(OMI_DBG((omi_debug, "transactions since last stat dump: %ld\n", omi_nxact2))); IA64_ONLY(OMI_DBG((omi_debug, "transactions since last stat dump: %d\n", omi_nxact2))); if (itime) { FPRINTF(fp, "Avg. transactions/sec since last stat dump: %ld\n", omi_nxact2/itime); OMI_DBG((omi_debug, "Avg. transactions/sec since last stat dump: %ld\n", omi_nxact2/itime)); } } NON_IA64_ONLY(FPRINTF(fp, "Number of errors: %ld\n", omi_nerrs)); IA64_ONLY(FPRINTF(fp, "Number of errors: %d\n", omi_nerrs)); NON_IA64_ONLY(OMI_DBG((omi_debug, "Number of errors: %ld\n", omi_nerrs))); IA64_ONLY(OMI_DBG((omi_debug, "Number of errors: %d\n", omi_nerrs))); NON_IA64_ONLY(FPRINTF(fp, "Number of bytes received: %ld\n", omi_brecv)); IA64_ONLY(FPRINTF(fp, "Number of bytes received: %d\n", omi_brecv)); NON_IA64_ONLY(OMI_DBG((omi_debug, "Number of bytes received: %ld\n", omi_brecv))); IA64_ONLY(OMI_DBG((omi_debug, "Number of bytes received: %d\n", omi_brecv))); NON_IA64_ONLY(FPRINTF(fp, "Number of bytes sent: %ld\n", omi_bsent)); IA64_ONLY(FPRINTF(fp, "Number of bytes sent: %d\n", omi_bsent)); NON_IA64_ONLY(OMI_DBG((omi_debug, "Number of bytes sent: %ld\n", omi_bsent))); IA64_ONLY(OMI_DBG((omi_debug, "Number of bytes sent: %d\n", omi_bsent))); FPRINTF(fp, "\n"); gtcm_ltime = (int4)t; omi_nxact2 = 0; FFLUSH(fp); FCLOSE(fp, status); return 0; }