exc_capture_context man page on DigitalUNIX

Printed from http://www.polarhome.com/service/man/?qf=exc_capture_context&af=0&tf=2&of=DigitalUNIX

exc_resume(3)							 exc_resume(3)

       exc_resume, exc_longjmp, exc_capture_context, exc_continue, exc_unwind,
       RtlUnwindRfp - entry points that support	 resuming  execution  of  user

       #include <excpt.h>

       void exc_resume(
	       PCONTEXT contextRecord ); void exc_longjmp(
	       PCONTEXT contextRecord,
	       long returnValue ); unsigned long exc_capture_context(
	       PCONTEXT contextRecord ); void exc_continue(
	       PCONTEXT contextRecord ); void exc_unwind(
	       void TargetFrame,
	       void TargetIp,
	       system_exrec_type *exceptionRecord,
	       long returnValue ); void RtlUnwindRfp(
	       void *TargetRealFrame,
	       void *TargetIp,
	       system_exrec_type *exceptionRecord,
	       long returnValue );

       Exception Handling Library (libexc.a)

       Pointer to a struct sigcontext (see signal(2)) used to represent a pro‐
       cedure's context.  Value to be passed to the  continuing	 code  at  the
       completion  of  the  unwind.   If nonzero, virtual frame pointer of the
       target procedure invocation to which the unwind is to be done; if zero,
       specifies  that an exit unwind is to be initiated and causes the EXCEP‐
       TION_EXIT_UNWIND flag to be set in the exception record.	 If  TargetRe‐
       alFrame	is  nonzero,  address within the target invocation at which to
       continue execution; otherwise, this parameter is ignored.   Address  of
       primary exception record.  If nonzero, real frame pointer of the target
       procedure invocation to which the unwind is to be done; if zero, speci‐
       fies  that  an  exit  unwind  is	 to be initiated and causes the EXCEP‐
       TION_EXIT_UNWIND flag to be set in the exception record.

       The exc_resume() and exc_continue() functions perform  essentially  the
       same  operation	as  longjmp(3).	 The exc_resume() function is a libexc
       entry point.

       The exc_capture_context() function saves the current procedure  context
       in the struct sigcontext identified by contextRecord.

       The  exc_longjmp()  function  restores  the context that was saved by a
       previous call to exc_capture_context() and calls exc_unwind(),  setting
       up  its	arguments  from information taken from the contextRecord argu‐
       ment. If the returnValue argument is 0 (zero), it is  set  to  1	 (one)
       before the call.

       The exc_unwind() function initiates an unwind of procedure call frames.
       It sets the EXCEPTION_UNWINDING flag in	the  exception	flags  of  the
       exception  record, which describes the machine state at the time of the
       exc_unwind()  call.  If	the  TargetFrame  argument   is	  zero,	  then
       exc_unwind()  also  sets	 the EXCEPTION_EXIT_UNWIND flag. It then scans
       the procedure call frames towards the base of the call  stack  to  find
       the target of the unwind operation.

       The  RtlUnwindRfp() function is similar to exc_unwind() except that its
       first argument is a real frame  pointer	instead	 of  a	virtual	 frame
       pointer.	 Real  frame  pointers	point  to the bottom of the statically
       allocated portion of a stack frame. Virtual frame pointers point to the
       top of the stack frame.

       As  it  encounters  each	 frame, the unwind code determines the program
       counter where control left the corresponding  function  by  looking  at
       exception  handler  information in the run-time function table built by
       the linker. If the respective routine has an  exception	handler,  then
       the  unwind  code  calls	 it.  This handler should perform cleanup code
       required for that activation.  Programs written in  the	C  programming
       language, which supports structured exception handling, usually contain
       a try...finally block that implements a termination handler  that  per‐
       forms these chores (see c_excpt(4)).  The unwind code also calls a han‐
       dler when it reaches the TargetFrame so that any scope-oriented cleanup
       code  or	 termination  handler  can  execute. In this case, it sets the
       EXCEPTION_TARGET_FRAME flag in the ExceptionFlags field of  the	excep‐
       tion record.

       Once  it finds the TargetFrame (if specified) and calls its handler (if
       available), exc_unwind(): Sets the PC to the TargetIp Sets  the	return
       value  to  be  the returnValue argument, if the returnValue argument is
       nonzero, Sets the return value to be the ExceptionCode of the exception
       record if the returnValue argument is zero Calls exc_continue()

       The  exc_capture_context() function returns a value of 0 (zero), unless
       the return is from a call to the exc_longjmp() function, in which  case
       exc_capture_context()  returns  the  nonzero  value  specified  in  the
       returnValue argument to exc_longjmp().

       The exc_longjmp() function cannot return 0 (zero) to the previous  con‐
       text.  The  value  0 is reserved to indicate the actual return from the
       exc_capture_context() function when first called by the program. If the
       exc_longjmp  function()	is passed a returnValue parameter of 0, execu‐
       tion continues as if the corresponding  call  to	 the  exc_capture_con‐
       text() function had returned a value of 1.

       /usr/ccs/lib/cmplrs/cc/libexc.a -- exception handling library
       /usr/include/excpt.h -- include file
       /usr/include/pdsc.h -- include file
       /usr/include/signal.h -- include file
       /usr/include/machine/fpu.h -- include file

       Functions:	  exception_intro(3),	      exception_dispatcher(3),
       exc_lookup_function_entry(3),	     signal(2),		 sigaction(2),
       __exc_last_chance(3), ieee(3).

       Files: excpt(4), c_excpt(4), signal(4), pdsc(4).

       Assembly Language Programmer's Guide.

       Calling Standard for Alpha Systems.


List of man pages available for DigitalUNIX

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
Vote for polarhome
Free Shell Accounts :: the biggest list on the net