fis-gtm/sr_port/gdskill.h

49 lines
1.8 KiB
C

/****************************************************************
* *
* Copyright 2001, 2008 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 __GDSKILL_H__
#define __GDSKILL_H__
/* Since small memory is allocated in powers of two, keep the kill_set
structure size about 8 bytes under 1k mark (current size of
header used by memory management system) */
#define BLKS_IN_KILL_SET 251
/* Note the currently GDS_MAX_BLK_BITS is 28. This 28 bit block field allows for a 256M GDS block database.
* The three byte level field is the minimum required to contain the level. However, if more addressability
* is needed, the level field can likely be shrunk to a single bit to indicate a non-zero level and then the
* actual level obtained when the blocks are read in. Note that if this changes, a comment in gvcst_init()
* also needs adjustment.
*/
typedef struct
{
#ifdef BIGENDIAN
unsigned int flag : 1; /* Block was created by this TP transaction (not real block yet) */
unsigned int level : 3; /* Block level (0 to 6) */
unsigned int block : GDS_MAX_BLK_BITS; /* Block number */
#else
unsigned int block : GDS_MAX_BLK_BITS; /* Block number */
unsigned int level : 3; /* Block level (0 to 6) */
unsigned int flag : 1; /* Block was created by this TP transaction (not real block yet) */
#endif
} blk_ident;
typedef struct kill_set_struct
{
struct kill_set_struct
*next_kill_set;
int4 used;
blk_ident blk[BLKS_IN_KILL_SET];
} kill_set;
#endif