fis-gtm/sr_port/tp_get_cw.c

46 lines
1.5 KiB
C

/****************************************************************
* *
* Copyright 2001, 2010 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. *
* *
****************************************************************/
#include "mdef.h"
#include "gdsroot.h"
#include "gdskill.h"
#include "gdsbt.h"
#include "gtm_facility.h"
#include "fileinfo.h"
#include "gdsfhead.h"
#include "gdscc.h"
#include "filestruct.h"
#include "jnl.h"
#include "buddy_list.h" /* needed for tp.h */
#include "hashtab_int4.h" /* needed for tp.h */
#include "tp.h"
GBLREF sgm_info *sgm_info_ptr;
void tp_get_cw (cw_set_element *cs, int depth, cw_set_element **cs1)
{
cw_set_element *cs_tmp; /* to avoid double dereferencing in the TRAVERSE macro */
assert (depth < sgm_info_ptr->cw_set_depth);
cs_tmp = (cw_set_element *)find_element(sgm_info_ptr->cw_set_list, depth);
/* Above returns the first cse (least t_level) in the horizontal list.
* Traverse the horizontal list to go to the latest -
* since the usual transaction depth is not much (on an average 2), this does
* not hamper performance so much to necessiate maintaining links to the head
* and tail of horizontal list of cw_set_elements
*/
assert(cs_tmp);
TRAVERSE_TO_LATEST_CSE(cs_tmp);
*cs1 = cs_tmp;
}