fis-gtm/sr_port/probe.h

45 lines
1.5 KiB
C

/****************************************************************
* *
* Copyright 2001, 2007 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 PROBE_included
#define PROBE_included
/* Only VAX has a non-boolean return code due to the secvector mechanism. */
#if defined(VAX)
uint4 probe(uint4 len, sm_uc_ptr_t addr, boolean_t write);
#elif defined(UNIX)
boolean_t probe(uint4 len, void *addr, boolean_t write);
#else
boolean_t probe(uint4 len, sm_uc_ptr_t addr, boolean_t write);
#endif
/* GTM_PROBE is defined to call the probe() function. In VAX, probe() resides in GTMSECSHR
* and might return a status code (actually from change_mode.mar) which should not be confused
* with the output of the probe() call. Hence the check for TRUE == probe().
*/
#ifdef VAX
#define GTM_PROBE(X, Y, Z) (TRUE == probe((X), (Y), (Z)))
#else
#define GTM_PROBE(X, Y, Z) (probe((uint4)(X), (Y), (Z)))
#endif
#define WRITE TRUE
#define READ FALSE
#define PROBE_EVEN(X) (!((UINTPTR_T)(X) & 1))
#define PROBE_ODD(X) (!PROBE_EVEN(X))
#define CAREFUL_DECR_CNT(X,Y) if (PROBE_EVEN(X)) DECR_CNT((X),(Y))
#define CAREFUL_INCR_CNT(X,Y) if (PROBE_EVEN(X)) INCR_CNT((X),(Y))
#endif