45 lines
1.5 KiB
C
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
|