fis-gtm/sr_unix/heartbeat_timer.h

41 lines
1.6 KiB
C
Raw Normal View History

/****************************************************************
* *
* Copyright 2001, 2011 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. *
* *
****************************************************************/
#ifndef _HEARTBEAT_TIMER_H
#define _HEARTBEAT_TIMER_H
#define HEARTBEAT_INTERVAL_IN_SECS 8 /* Need to maintain this in sync with HEARTBEAT_INTERVAL. To avoid
* division by 1000 wherever needed, the value is hardcoded to be 8
*/
/* define heartbeat interval */
#define HEARTBEAT_INTERVAL (HEARTBEAT_INTERVAL_IN_SECS * MILLISECS_IN_SEC) /* ms */
#define NUM_HEARTBEATS_FOR_OLDERJNL_CHECK 8 /* gives a total of 8 * 8 = 64 seconds between checks of older jnl files */
GBLREF boolean_t heartbeat_started;
/* The heartbeat timer is used
* 1) To periodically check if we have older generation journal files open and if so to close them.
* 2) By mutex logic to approximately measure the time spent sleeping while waiting for CRIT or MSEMLOCK.
* Linux currently does not support MSEMs. It uses the heartbeat timer only for (1).
*/
#define START_HEARTBEAT_IF_NEEDED \
{ \
if (!heartbeat_started) \
{ \
start_timer((TID)&heartbeat_timer, HEARTBEAT_INTERVAL, heartbeat_timer, 0, NULL); \
heartbeat_started = TRUE; /* should always be set AFTER start_timer */ \
} \
}
void heartbeat_timer(void);
#endif