46 lines
1.5 KiB
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;
|
||
|
}
|