fis-gtm/sr_port/mupint.h

77 lines
2.6 KiB
C

/****************************************************************
* *
* Copyright 2001, 2012 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 MUPINT_H
#define MUPINT_H
/* requires gdsroot.h */
#define NO_ONLINE_ERR_MSG "ONLINE qualifier for this region will be ignored"
typedef struct global_list_struct
{
block_id root;
struct global_list_struct *link;
block_id path[MAX_BT_DEPTH + 1];
uint4 offset[MAX_BT_DEPTH + 1];
unsigned char nct;
unsigned char act;
unsigned char ver;
char key[MAX_MIDENT_LEN + 1]; /* max key length plus one for printf terminator */
int4 keysize; /* length of the key */
} global_list;
#ifdef BIGENDIAN
typedef struct
{ unsigned int two : 4;
unsigned int one : 4;
} sub_num;
#else
typedef struct
{ unsigned int one : 4;
unsigned int two : 4;
} sub_num;
#endif
enum sn_type
{
SN_NOT = 0,
SPAN_NODE,
SN_CHUNK
};
typedef struct struct_spanode_integ{
uint4 sn_type; /* 0: not in spanning node. 1: spanning node. 2:spanning fragment*/
uint4 span_prev_blk; /* Left sibling of current block of spanning node */
uint4 span_blk_cnt; /* Count of the blocks of spanning node seen so far */
uint4 span_tot_blks; /* Total blks in the spanning nodes to be integ-checked */
uint4 span_node_sz; /* Size of the spanning node value */
uint4 span_frag_off; /* Spanning node fragment offset */
uint4 key_len; /* Length of the key of spanning node */
uint4 val_len; /* Length of the val of spanning node */
uint4 sn_cnt; /* Spanning node count */
uint4 sn_blk_cnt; /* Count of the blocks used by the spanning node */
unsigned char span_node_buf[MAX_KEY_SZ]; /* Spanning node key */
}span_node_integ;
boolean_t mu_int_blk(block_id blk, char level, boolean_t is_root, unsigned char *bot_key,
int bot_len, unsigned char *top_key, int top_len, boolean_t eb_ok);
boolean_t mu_int_fhead(void);
boolean_t mu_int_init(void);
void mu_int_reg(gd_region *reg, boolean_t *return_value);
int mu_int_getkey(unsigned char *key_buff, int keylen);
uchar_ptr_t mu_int_read(block_id blk, enum db_ver *ondsk_blkver);
void mu_int_err(int err, boolean_t do_path, boolean_t do_range, unsigned char *bot, int has_bot,
unsigned char *top, int has_top, unsigned int level);
void mu_int_maps(void);
void mu_int_write(block_id blk, uchar_ptr_t ptr);
#endif