void gtm_putmsg_noflush_csa(void *csa, int argcnt, ...) { va_list var; VAR_START(var, argcnt); gtm_putmsg_list(csa, argcnt, var); va_end(var); }
int rts_error_va(void *csa, int argcnt, va_list var) { int msgid; va_list var_dup; const err_ctl *ctl; # ifdef DEBUG DCL_THREADGBL_ACCESS; SETUP_THREADGBL_ACCESS; if (TREF(rts_error_unusable) && !TREF(rts_error_unusable_seen)) { TREF(rts_error_unusable_seen) = TRUE; /* The below assert ensures that this rts_error invocation is appropriate in the current context of the code that * triggered this rts_error. If ever this assert fails, investigate the window of DBG_MARK_RTS_ERROR_UNUSABLE * and DBG_MARK_RTS_ERROR_USABLE in the call-stack. */ assert(FALSE); } # endif VAR_COPY(var_dup, var); if (-1 == gtm_errno) gtm_errno = errno; msgid = va_arg(var_dup, int); /* If there was a previous fatal error that did not yet get printed, do it before overwriting the * util_output buffer with the about-to-be-handled nested error. This way one will see ALL the * fatal error messages (e.g. assert failures) in the order in which they occurred instead of * just the last nested one. */ if (DUMPABLE) PRN_ERROR; /* This is simply a place holder msg to signal tp restart or otherwise rethrow an error */ if ((ERR_TPRETRY == msgid) || (ERR_REPEATERROR == msgid) || (ERR_REPLONLNRLBK == msgid) || (ERR_JOBINTRRQST == msgid) || (ERR_JOBINTRRETHROW == msgid)) { SET_ERROR_CONDITION(msgid); /* sets "error_condition" & "severity" */ } else { /* Note this message is not flushed out. This is so user console is not polluted with messages that are going to be * handled by a ZTRAP. If ZTRAP is not active, the message will be flushed out in mdb_condition_handler - which is * usually the top level handler or is rolled over into by higher handlers. */ if (IS_GTMSECSHR_IMAGE) util_out_print(NULL, RESET); SET_ERROR_CONDITION(msgid); /* sets "error_condition" & "severity" */ gtm_putmsg_list(csa, argcnt, var); if (DUMPABLE) created_core = dont_want_core = FALSE; /* We can create a(nother) core now */ if (IS_GTMSECSHR_IMAGE) util_out_print(NULL, OPER); /* gtmsecshr errors always immediately pushed out */ } va_end(var_dup); va_end(var); DRIVECH(msgid); /* Drive the topmost (inactive) condition handler */ /* Note -- at one time there was code here to catch if we returned from the condition handlers * when the severity was error or above. That code had to be removed because of several errors * that are handled and returned from. An example is EOF errors. SE 9/2000 */ return 0; }
void gtm_putmsg_csa(void *csa, int argcnt, ...) { va_list var; VAR_START(var, argcnt); gtm_putmsg_list(csa, argcnt, var); va_end(var); util_out_print("",TRUE); }
void gtm_putmsg_noflush(int argcnt, ...) { va_list var; sgmnt_addrs *csa; DCL_THREADGBL_ACCESS; SETUP_THREADGBL_ACCESS; csa = (ANTICIPATORY_FREEZE_AVAILABLE && jnlpool.jnlpool_ctl) ? REG2CSA(gv_cur_region) : NULL; VAR_START(var, argcnt); gtm_putmsg_list(csa, argcnt, var); va_end(var); }