32 lines
1.6 KiB
C
32 lines
1.6 KiB
C
/****************************************************************
|
|
* *
|
|
* Copyright 2001, 2002 Sanchez Computer Associates, 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 GVCST_BMP_MARK_FREE_INCLUDED
|
|
#define GVCST_BMP_MARK_FREE_INCLUDED
|
|
|
|
trans_num gvcst_bmp_mark_free(kill_set *ks);
|
|
|
|
#define GVCST_BMP_MARK_FREE(ks, ret_tn, cur_inctn_opcode, new_inctn_opcode, inctn_opcode, cs_addrs) \
|
|
{ /* inctn_opcode is set already by callers (TP/non-TP/reorg) and is not expected to change. save it \
|
|
* before modifying it. actually, the following save and reset of inctn_opcode (done before and after the \
|
|
* call to gvcst_bmp_mark_free()) needs to be done only if JNL_ENABLED(cs_addrs), but since it is not \
|
|
* easy to re-execute the save and reset of inctn_opcode in case t_end() detects a cdb_sc_jnlstatemod \
|
|
* retry code, we choose the easier approach of doing the save and reset unconditionally even though this \
|
|
* approach has an overhead of doing a few assignments even though inctn_opcode might not be used in t_end \
|
|
* (in case JNL_ENABLED is not TRUE at t_end() time). \
|
|
*/ \
|
|
assert(inctn_opcode == cur_inctn_opcode); \
|
|
inctn_opcode = new_inctn_opcode; \
|
|
ret_tn = gvcst_bmp_mark_free(ks); \
|
|
inctn_opcode = cur_inctn_opcode; /* restore inctn_opcode */ \
|
|
}
|
|
#endif /* GVCST_BMP_MARK_FREE_INCLUDED */
|