fis-gtm/sr_unix_cm/gtcm_dmpstat.c

144 lines
4.9 KiB
C

/****************************************************************
* *
* Copyright 2001, 2009 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 <sys/types.h>
#include <signal.h>
#include "gtm_stdio.h"
#include "gtm_time.h"
#include "gtcm.h"
#include "eintr_wrappers.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;
}