41 lines
1.6 KiB
C
41 lines
1.6 KiB
C
/****************************************************************
|
|
* *
|
|
* 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
|