/**************************************************************** * * * Copyright 2010, 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. * * * ****************************************************************/ /* Note since this table is included multiple times, it should not have "previously included" protection. * * When adding items to this table, please be aware of alignment issues. * * Notes on where to put added items: * * 1. Make organization defensible. Possible organizations: * a. Group like-types alphabetically. * b. Gorup related items (such as compiler, replication, etc. * 2. Because references will use an offset into this structure and since the "immediate offset" in * compiler generated instructions is usually limited to "smaller" values like less than 16K or * 32K or whatever (platform dependent), items near the top of the table should be reserved used for * the most commonly used items (e.g. cs_addrs, cs_data, gv_target, etc). * 3. Larger arrays/structures should go nearer the end. * 4. There are no other runtime dependencies on this order. The order of fields can be switched around * any way desired with just a rebuild. * 5. It is important for ANY DEBUG_ONLY fields to go at the VERY END. Failure to do this breaks gtmpcat. */ /* Priority access fields - commonly used fields in performance situations */ THREADGBLDEF(grabbing_crit, gd_region *) /* Region currently grabbing crit in (if any) */ /* Compiler */ THREADGBLDEF(boolchain, triple) /* anchor for chain used by bx_boolop */ THREADGBLDEF(boolchain_ptr, triple *) /* pointer to anchor for chain used by bx_boolop */ THREADGBLDEF(bool_targ_anchor, tbp) /* anchor of targ chain for bool relocation */ THREADGBLDEF(bool_targ_ptr, tbp *) /* ptr->anchor of targ chain for bool relocation */ THREADGBLDEF(code_generated, boolean_t) /* flag that the compiler generated an object */ THREADGBLDEF(codegen_padlen, int4) /* used to pad code to section alignment */ THREADGBLDEF(compile_time, boolean_t) /* flag that the compiler's at work */ THREADGBLDEF(curtchain, triple *) /* pointer to anchor of current triple chain */ THREADGBLDEF(director_ident, mstr) /* look-ahead scanner mident from advancewindow */ THREADGBLDEF(director_mval, mval) /* look-ahead scanner mval from advancewindow*/ THREADGBLDEF(director_token, char) /* look-ahead scanner token from advancewindow */ THREADGBLDEF(dollar_zcstatus, int4) /* return status for zcompile and others */ THREADGBLDEF(expr_depth, unsigned int) /* expression nesting level */ THREADGBLDEF(expr_start, triple *) /* chain anchor for side effect early evaluation */ THREADGBLDEF(expr_start_orig, triple *) /* anchor used to test if there's anything hung on * expr_start */ THREADGBLDEF(for_nest_level, uint4) /* kludge feeds extra (non-lvn) arg to FOR rt ops */ THREADGBLDEF(for_stack_ptr, oprtype **) /* part of FOR compilation nesting mechanism */ THREADGBLDEF(gtm_fullbool, unsigned int) /* controls boolean side-effect behavior defaults * to 0 (GTM_BOOL) */ THREADGBLDEF(ind_result_array, mval **) /* base of array holding indirection returns */ THREADGBLDEF(ind_result_sp, mval **) /* pointer into array holding indirection returns */ THREADGBLDEF(ind_result_top, mval **) /* top of array holding indirection returns */ THREADGBLDEF(ind_source_array, mval **) /* base of array holding indirection values */ THREADGBLDEF(ind_source_sp, mval **) /* pointer into array holding indirection values */ THREADGBLDEF(ind_source_top, mval **) /* top of array holding indirection values */ THREADGBLDEF(last_source_column, short int) /* parser tracker */ THREADGBLDEF(pos_in_chain, triple) /* anchor used to restart after a parsing error */ THREADGBLDEF(s2n_intlit, boolean_t) /* type info from s2n for advancewindow */ THREADGBLDEF(saw_side_effect, boolean_t) /* need side effect handling other than naked */ THREADGBLDEF(shift_side_effects, int) /* flag shifting of side-effects ahead of boolean * evalation */ THREADGBLDEF(source_error_found, int4) /* flag to partially defer compiler error */ THREADGBLDEF(temp_subs, boolean_t) /* flag temp storing of subscripts to preserve * current evaluation */ THREADGBLDEF(trigger_compile, boolean_t) /* A trigger compilation is active */ THREADGBLDEF(window_ident, mstr) /* current scanner mident from advancewindow */ THREADGBLDEF(window_mval, mval) /* current scanner mval from advancewindow */ THREADGBLDEF(window_token, char) /* current scanner token from advancewindow */ /* Database */ THREADGBLDEF(dbinit_max_hrtbt_delta, uint4) /* max heartbeats before we bail out in db_init */ THREADGBLDEF(dollar_zmaxtptime, int4) /* tp timeout in seconds */ THREADGBLDEF(donot_commit, boolean_t) /* debug-only - see gdsfhead.h for purpose */ THREADGBLDEF(donot_write_inctn_in_wcs_recover, boolean_t) /* TRUE if wcs_recover should NOT write INCTN */ THREADGBLDEF(gd_targ_addr, gd_addr *) /* current global directory reference */ THREADGBLDEF(gtm_custom_errors, mstr) THREADGBLDEF(gtm_gvundef_fatal, boolean_t) /* core and die intended for testing */ THREADGBLDEF(gv_extname_size, int4) /* part op_gvextname working memory mechanism */ THREADGBLDEF(gv_last_subsc_null, boolean_t) /* indicates whether the last subscript of * gv_currkey (aka $reference) is a NULL string */ THREADGBLDEF(gv_mergekey2, gv_key *) /* op_merge working memory */ THREADGBLDEF(gv_reorgkey, gv_key *) /* mu_swap_blk working memory */ THREADGBLDEF(gv_some_subsc_null, boolean_t) /* TRUE if SOME subscript other than the last is * NULL in gv_currkey (aka $REFERENCE). Note that * while "some" in var name might typically include * the last subscript, it does NOT in this case and * allows name to be kept shorter. */ THREADGBLDEF(gv_sparekey, gv_key *) /* gv_xform_key working memory */ THREADGBLDEF(gv_sparekey_mval, mval) /* gv_xform_key working memory */ THREADGBLDEF(gv_sparekey_size, int4) /* part gv_xform_key working memory mechanism */ THREADGBLDEF(gv_tporigkey_ptr, gv_orig_key_array *) /* op_tstart tp nesting anchor */ THREADGBLDEF(in_gvcst_redo_root_search, boolean_t) /* TRUE if gvcst_redo_root_search is in C-stack */ THREADGBLDEF(in_op_gvget, boolean_t) /* TRUE if op_gvget() is a C-stack call ancestor */ THREADGBLDEF(issue_DBROLLEDBACK_anyways, boolean_t) /* currently set by MUPIP LOAD */ THREADGBLDEF(last_fnquery_return_subcnt, int) /* count subscript in last_fnquery_return_sub */ THREADGBLDEF(last_fnquery_return_varname, mval) /* returned varname of last $QUERY() */ THREADGBLDEF(new_dbinit_ipc, int4) /* indicates whether shared memory/semaphore is * created by db_init (also used by dbinit_ch) */ THREADGBLDEF(ok_to_call_wcs_recover, boolean_t) /* Set to TRUE before a few wcs_recover callers. * Any call to wcs_recover in the final retry * assert to prevent cache recovery while in a * transaction and confuse things enough to cause * further restarts (which is out-of-design while * in the final retry). */ THREADGBLDEF(in_gvcst_bmp_mark_free, boolean_t) /* May need to skip online rollback cleanup or * gvcst_redo_root_search on a restart */ THREADGBLDEF(prev_gv_target, gv_namehead *) /* saves the last gv_target for debugging */ THREADGBLDEF(ready2signal_gvundef, boolean_t) /* TRUE if GET operation about to signal GVUNDEF */ #ifdef UNIX THREADGBLDEF(redo_rootsrch_ctxt, redo_root_search_context) /* context to be saved and restored during * gvcst_redo_root_search */ #endif THREADGBLDEF(semwait2long, volatile boolean_t) /* Waited too long for a semaphore */ THREADGBLDEF(skip_file_corrupt_check, boolean_t) /* skip file_corrupt check in grab_crit */ THREADGBLDEF(tpnotacidtime, int4) /* limit for long non-ACID ops in transactions */ THREADGBLDEF(tp_restart_count, uint4) /* tp_restart counter */ THREADGBLDEF(tp_restart_dont_counts, int4) /* tp_restart count adjustment; NOTE: DEBUG only */ THREADGBLDEF(tp_restart_entryref, mval) /* tp_restart position for reporting */ THREADGBLDEF(tp_restart_failhist_indx, int4) /* tp_restart dbg restart history index */ THREADGBLDEF(tprestart_syslog_delta, int4) /* defines every n-th restart to be logged */ THREADGBLDEF(tprestart_syslog_limit, int4) /* # of TP restarts logged unconditionally */ #ifdef ENABLE_EXTENDED_RESTART_TRACE_HIST THREADGBLDEF(trans_restart_hist_index, uint4) #endif THREADGBLDEF(transform, boolean_t) /* flag collation transform eligible */ THREADGBLDEF(wcs_recover_done, boolean_t) /* TRUE if wcs_recover was ever invoked in this * process. */ /* Local variables */ THREADGBLDEF(in_op_fnnext, boolean_t) /* set TRUE by op_fnnext; FALSE by op_fnorder */ THREADGBLDEF(local_collseq, collseq *) /* pointer to collation algorithm for lvns */ THREADGBLDEF(local_collseq_stdnull, boolean_t) /* flag temp controlling empty-string subscript * handling - if true, use standard null subscript * collation for local variables */ THREADGBLDEF(local_coll_nums_as_strings, boolean_t) /* flag controlling whether local variables that * evaluate to numbers are treated like numbers * (collating before strings) or like strings in * local collations */ THREADGBLDEF(lv_null_subs, int) /* UNIX: set in gtm_env_init_sp(), * VMS: set in gtm$startup() */ THREADGBLDEF(max_lcl_coll_xform_bufsiz, int) /* max size of local collation buffer,which extends * from 32K each time the buffer overflows */ /* Replication variables */ THREADGBLDEF(replgbl, replgbl_t) /* set of global variables needed by the source * server */ /* Miscellaneous */ THREADGBLDEF(collseq_list, collseq *) /* list of pointers to currently mapped collation * algorithms - since this seems only used in * collseq.c -seems more like a STATICDEF */ THREADGBLFPTR(create_fatal_error_zshow_dmp_fptr, void, (void)) /* Fptr for gtm_fatal_error* zshow dmp routine */ THREADGBLDEF(disable_sigcont, boolean_t) /* indicates whether the SIGCONT signal * is allowed internally */ THREADGBLDEF(dollar_zcompile, mstr) /* compiler qualifiers */ THREADGBLDEF(dollar_zmode, mval) /* run mode indicator */ THREADGBLDEF(dollar_zonlnrlbk, int) /* ISV (incremented for every online rollback) */ THREADGBLDEF(dollar_zroutines, mstr) /* routine search list */ THREADGBLDEF(error_on_jnl_file_lost, unsigned int) /* controls error handling done by jnl_file_lost. * 0 (default) : Turn off journaling and continue. * 1 : Keep journaling on, throw rts_error. * VMS does not supports this and requires it to * be 0. */ #ifdef UNIX THREADGBLDEF(fnzsearch_lv_vars, lv_val *) /* UNIX op_fnzsearch lv tree anchor */ THREADGBLDEF(fnzsearch_sub_mval, mval) /* UNIX op_fnzsearch subscript constuctor */ THREADGBLDEF(fnzsearch_nullsubs_sav, int) /* UNIX op_fnzsearch temp for null subs control */ #endif THREADGBLDEF(gtm_env_init_done, boolean_t) /* gtm_env_init flag for completion */ THREADGBLFPTR(gtm_env_xlate_entry, int, ()) /* gtm_env_xlate() function pointer */ THREADGBLDEF(gtm_environment_init, boolean_t) /* indicates GT.M development environment rather * than a production environment */ THREADGBLFPTR(gtm_sigusr1_handler, void, (void)) /* SIGUSR1 signal handler function ptr */ THREADGBLDEF(gtm_trctbl_cur, trctbl_entry *) /* Current gtm trace table entry */ THREADGBLDEF(gtm_trctbl_end, trctbl_entry *) /* End of gtm trace table (last entry + 1) */ THREADGBLDEF(gtm_trctbl_groups, unsigned int) /* Trace group mask (max 31 groups) */ THREADGBLDEF(gtm_trctbl_start, trctbl_entry *) /* Start of gtm trace table */ THREADGBLDEF(gtm_waitstuck_script, mstr) /* Path to the script to be executed during waits*/ THREADGBLDEF(gtmprompt, mstr) /* mstr pointing to prombuf containing the GTM * prompt */ THREADGBLDEF(gtmsecshr_comkey, unsigned int) /* Hashed version key for gtmsecshr communications * eliminates cross-version issues */ THREADGBLDEF(in_zwrite, boolean_t) /* ZWrite is active */ THREADGBLDEF(lab_proxy, lab_tabent_proxy) /* Placeholder storing lab_ln_ptr offset / lnr_adr * pointer and has_parms value, so they are * contiguous in memory */ #ifdef VMS THREADGBLDEF(lbl_tbl_entry_index, int) /* Index of currently compiled label table entry */ THREADGBLAR1DEF(login_time, int4, 2) /* */ #endif THREADGBLDEF(mprof_alloc_reclaim, boolean_t) /* Flag indicating whether the temporarily allocated * memory should be reclaimed */ THREADGBLDEF(mprof_chunk_avail_size, int) /* Number of mprof stack frames that can fit in * the current chunk */ THREADGBLDEF(mprof_env_gbl_name, mval) /* Name of global to use in mprof testing; should * be undefined to not use explicit mprof testing, * and empty or '0' if mprof data should not be * dumped into a global at the end */ THREADGBLDEF(mprof_ptr, mprof_wrapper *) /* Object containing key mprof references */ THREADGBLDEF(mprof_reclaim_addr, char *) /* Address of the memory bucket before * unw_prof_frame temporary allocations in case they * go to new bucket */ THREADGBLDEF(mprof_reclaim_cnt, int) /* Amount of mem to reclaim after unw_prof_frame */ THREADGBLDEF(mprof_stack_curr_frame, mprof_stack_frame *) /* Pointer to the last frame on the mprof stack */ THREADGBLDEF(mprof_stack_next_frame, mprof_stack_frame *) /* Pointer to the next frame to be put on the * mprof stack */ #ifdef UNIX THREADGBLDEF(open_shlib_root, open_shlib *) /* Anchor for open shared library list */ #endif THREADGBLDEF(parm_pool_ptr, parm_pool *) /* Pointer to the parameter pool */ THREADGBLDEF(parms_cnt, unsigned int) /* Parameters count */ #ifdef UNIX THREADGBLDEF(pipefifo_interrupt, int) /* count of number of times a pipe or fifo device is * interrupted */ #endif THREADGBLDEF(prof_fp, mprof_stack_frame *) /* Stack frame that mprof currently operates on */ THREADGBLDEF(trans_code_pop, mval *) /* trans_code holder for $ZTRAP popping */ THREADGBLDEF(view_ydirt_str, char *) /* op_view working storage for ydir* ops */ THREADGBLDEF(view_ydirt_str_len, int4) /* Part of op_view working storage for ydir* ops */ THREADGBLDEF(zdate_form, int4) /* Control for default $zdate() format */ THREADGBLAR1DEF(zintcmd_active, zintcmd_active_info, ZINTCMD_LAST) /* Interrupted timed commands */ THREADGBLDEF(zro_root, zro_ent *) /* Anchor for zroutines structure entry array */ #ifdef UNIX THREADGBLDEF(zsearch_var, lv_val *) /* UNIX $zsearch() lookup variable */ THREADGBLDEF(zsearch_dir1, lv_val *) /* UNIX $zsearch() directory 1 */ THREADGBLDEF(zsearch_dir2, lv_val *) /* UNIX $zsearch() directory 2 */ #endif /* Larger structures and char strings */ THREADGBLAR1DEF(director_string, char, SIZEOF(mident_fixed)) /* Buffer for director_ident */ THREADGBLDEF(fnpca, fnpc_area) /* $Piece cache structure area */ THREADGBLAR1DEF(for_stack, oprtype *, MAX_FOR_STACK) /* Stacks FOR scope complete (compilation) addrs */ THREADGBLAR1DEF(for_temps, boolean_t, MAX_FOR_STACK) /* Stacked flags of FOR control value temps */ THREADGBLAR1DEF(last_fnquery_return_sub, mval, MAX_LVSUBSCRIPTS)/* Returned subscripts of last $QUERY() */ THREADGBLDEF(lcl_coll_xform_buff, char *) /* This buffer is for local collation * transformations, which must not nest - i.e. * a transformation routine must not call another, * or itself. This kind of nesting would cause * overwriting of the buffer */ #ifdef UNIX THREADGBLAR1DEF(parm_ary, char *, MAX_PARMS) /* Parameter strings buffer */ THREADGBLAR1DEF(parm_ary_len, int, MAX_PARMS) /* Array element allocation length */ THREADGBLAR1DEF(parm_str_len, int, MAX_PARMS) /* Parameter strings lengths */ #endif THREADGBLAR1DEF(prombuf, char, (MAX_MIDENT_LEN + 1)) /* The prompt buffer size (32) would allow at * least 8 Unicode characters, but since most * commonly used Unicode characters only occupy up * to 3 bytes, the buffer would at least * accommodate 10 Unicode characters in a prompt */ THREADGBLDEF(rt_name_tbl, hash_table_mname) /* Routine hash table for finding $TEXT() info */ THREADGBLAR1DEF(tp_restart_failhist_arry, char, FAIL_HIST_ARRAY_SIZE) /* tp_restart dbg storage of restart history */ #ifdef ENABLE_EXTENDED_RESTART_TRACE_HIST THREADGBLAR1DEF(trans_restart_hist_array, trans_restart_hist_t, TRANS_RESTART_HIST_ARRAY_SZ) /* See tp.h for usage */ #endif #ifdef UNIX THREADGBLDEF(user_id, uint4) /* USERID number */ #endif THREADGBLAR1DEF(window_string, char, SIZEOF(mident_fixed)) /* Buffer for window_ident */ /* Utility I/O */ THREADGBLDEF(last_va_list_ptr, va_list) /* Last variable-length argument list used for util * out buffer management */ THREADGBLAR1DEF(util_outbuff, char, OUT_BUFF_SIZE * UTIL_OUTBUFF_STACK_SIZE) /* Util output buffer */ THREADGBLDEF(util_outbuff_ptr, char *) /* Pointer to util output buffer */ THREADGBLDEF(util_outptr, char *) /* Pointer within util output buffer */ /* GTM Call-in related globals */ #ifdef UNIX THREADGBLDEF(callin_hashtab, hash_table_str *) /* Callin hash table */ THREADGBLDEF(ci_table, callin_entry_list *) /* Callin table in the form of a linked list */ #endif THREADGBLDEF(extcall_package_root, struct extcall_package_list *) /* External call table package list */ #ifdef UNIX THREADGBLDEF(gtmci_nested_level, unsigned int) /* Current nested depth of callin environments */ #endif THREADGBLDEF(want_empty_gvts, boolean_t) /* set to TRUE by MUPIP REORG when it is selecting * globals to be reorged. Need to be able to select * killed globals for effective truncate. */ THREADGBLDEF(in_mu_swap_root, boolean_t) /* set to TRUE by MUPIP REORG when it is moving * GVT root blocks in mu_swap_root. */ THREADGBLDEF(prev_t_tries, unsigned int) /* t_tries - 1, before t_retry/tp_restart */ THREADGBLDEF(rlbk_during_redo_root, boolean_t) /* set to TRUE if an online rollback which takes * the db to a different logical state occurs * during gvcst_redo_root_search in t_retry */ /* Debug values */ #ifdef DEBUG THREADGBLDEF(continue_proc_cnt, int) /* Used by whitebox secshr test to count time * process was continued. */ THREADGBLDEF(gtm_usesecshr, boolean_t) /* Bypass easy methods of dealing with IPCs, files, * wakeups, etc and always use gtmsecshr (testing). */ THREADGBLDEF(rts_error_unusable, boolean_t) /* Denotes the window in which an rts_error is * unusable */ THREADGBLDEF(rts_error_unusable_seen, boolean_t) #endif