Guardian Procedure Calls Reference Manual

ExplanationReturned Text
was generated by tracing the stack to the privileged boundary, before the
switch to nonprivileged mode to enter the user's signal handler occurred.
Indicates the call site of USER_PROC.AnotherProc + 0x2F8 (UCr)
If the signal handler instead passed its uContext and specified the HO_Init_uContext option to
HIST_INIT_, the trace would start with PRIV_PROC_ and otherwise appear the same.
Examples
Example Code
The following example code shows the way this procedure is typically called in the TNS/R
environment:
STRUCT hws (HISTWORKSPACE_TEMPLATE);
.
.
.
error := HIST_INIT_ (hws, version1, options, context);
IF error <> HIST_OK THEN...;
DO BEGIN
WHILE (len := HIST_FORMAT_ (hws, buffer, limit)) > 0D DO
.
! Print text in buffer
.
END UNTIL (error := HIST_GETPRIOR_(hws)) <> HIST_OK;
IF error <> HIST_DONE THEN...;
Omit the DO loop and the HIST_GETPRIOR_ call to display only a single procedure state.
To specify a nondefault format selection, place an assignment to workspace.FormatSelect
after the HIST_INIT_ call but outside the WHILE loop.
Example Traces: Case 1
These traces are produced by a procedure named xtracer called from a native signal handler.
xtracer starts the trace by calling the HIST_INIT_ and HIST_FORMAT_ procedures. A SIGSEGV
signal is generated in a procedure that is invoked from a CALLABLE procedure. The CALLABLE
procedure is invoked from the unprivileged procedure HIST_TEST_ACTOR_.
For the first trace, the options parameter of HIST_INIT_ and the FormatSelect field of the
workspace structure passed to HIST_FORMAT_ are set up as follows:
options equals HO_Init_Here.
FormatSelect equals HF_trace (the default value).
702 Guardian Procedure Calls (H-K)