Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

_unw_setgr(3x) [hpux man page]

_UNW_currentContext(3X) 												   _UNW_currentContext(3X)

NAME
_UNW_currentContext(), _UNW_clear(), _UNW_jmpbufContext(), _UNW_setAR(), _UNW_setBR(), _UNW_setCFM(), _UNW_setFR(), _UNW_setGR(), _UNW_setGR_NaT(), _UNW_setIP(), _UNW_setPR(), _UNW_setPreds(), _UNW_step(), _UNW_FR_PhysicalNumber(), _UNW_GR_PhysicalNumber(), _UNW_PR_PhysicalNumber() - manipulate values in unwind library data structure SYNOPSIS
DESCRIPTION
initializes the object to describe the processor state of the procedure which is calling in other words, the processor state of "self." initializes the object to describe the processor state captured in a by a call to (see setjmp(3C)). resets the object to the "just constructed" condition. All register values in the are invalidated. The unwind library is placed in the Init state meaning the client can now use the _UNW_set routines to initialize values in the The Init state is discussed further in unwind(5). initializes the value of numbered general register num to value in the pointed to by parameter p. The NAT bit for the register is set to initializes the value of a numbered general register num to value in the pointed to by parameter p. The NAT bit for the register is set to initializes the value of a numbered floating point register, num, in the pointed to by parameter p, to the value image represented in parameters first_container and second_container. These two containers represent the two consecutive double words of the Floating point register Spill/Fill memory format. See "Section 5.3: Floating Point Instructions". initializes the value of numbered branch register num to value in the pointed to by parameter p. initializes the value of enumerated application register num to value in the pointed to by parameter p. The enumeration type is used for accessing application registers. initializes the value of a numbered predicate register num, in the pointed to by parameter p, to value, which is one of or initializes the value of all predicate registers in the pointed to by parameter p to a representation passed in value. value contains the contents of each predicate register in the bit corresponding corresponding to the predicate register number; for instance, bit 63 contains the contents (1 or 0) for predicate register 63. initializes the value of the instruction pointer to value in the pointed to by parameter p. value must be a full 64-bit address. That means that any 32-bit pointer values from the 32-bit address space must be swizzled before being passed to See "Section 1: Memory Model". initializes the value of the (CFM) to value in the pointed to by parameter p. Refer to "Section 3.1.7 Current Frame Marker". The current frame marker contains the sizes of the various portions of the stack frame. It also specifies three Register Rename Base values (used in register rotation). The current frame marker is not an architecturally visible value. It is used by the unwind library while initializing an for unwinding to provide the initial with a picture of the Register Stack Engine (RSE) (specifically how many stacked general registers registers from the range GR32 to GR127 are in the current frame) and any register base rotations in effect. A client program can construct a current frame marker value by several means: o A procedure wanting to unwind itself can call a "current state" collection procedure whose purpose is to fill in an structure which describes its own state. That procedure (if written in assembly) can use knowledge of its own register usage to craft the current frame marker value. o A tool (such as a debugger) wishing to unwind a process other than itself that it has interrupted (for instance, by setting a break point) can piece together the current frame marker value from the interruption context produced by the interruption event. See "Chapter 5: IA-64 Interruptions". and for the pointed to by parameter p return the physical register number corresponding to the logical register number, logical_num. The distinction between physical and logical register number is explained below in subsection INTERACTION BETWEEN INITIALIZER FUNCTIONS The stack unwind library requires that calls to these setter functions occur only during the state (and the state while handling a conform- ing ANSI C++ standards exception). The state constraints are discussed in unwind(5). The transition into the Init state happens when or is called. In the Init state, calls are allowed to initialize values in the of General Registers 1-31, scratch and preserved Floating Point Registers, scratch and preserved Predicate Registers, Branch Registers 0-7, IP, CFM, and Application Registers in the set RSC, BSP, BSPSTORE, RNAT, CCV, UNAT, FPSR, ITC, PFS, LC. Writing to a particular register validates that value in the A call to invalidates the general register values in the range GR32..GR127 and validates the current frame marker (CFM) value. Once the CFM value is valid writes to General Registers in the range, GR32 through GR32 + CFM.sof are allowed (for the purpose of initializing RSE stacked general registers in the current procedure's RSE frame). A specific set of registers listed in the unwind(5) section must be validated in order for a call to to be successful. Any initialization of register values not specifically listed in the previous paragraph is not allowed. For instance initialization of the constant registers (GR0, FR0, FR1, PR0) are not allowed. Violating this rule results in the alert code set to and the function returning Attempts to initialize an object which is in a state where initialization of values is not allowed causes no change to the value in It results in a return alert code of See also unwind(5). The unwind library register value initializer functions refer to registers by their physical numbers as opposed to the mapped (logical) numbers associated with rotations indicated in CFM.sor, CFM.rrb.gr, CFM.rrb.pr, CFM.rrb.fr. The stack unwind library defines the physical number to be the register number the value would lie in should the appropriate CFM.rrb field have value 0. The mapping functions and return the physical register number to pass to the initializer functions to access a given logical register. Passing a mapping function a logical number which is outside of the range of mapped logical numbers returns 0 and sets the alert condition. For example, calling while CFM.sor is 0 sets the alert condition. The contents of the object's CFM should be initialized prior to using the mapping functions. modifies the pointed to by parameter p to represent the processor state. RETURN VALUE
returns when is in a state where initialization of values is not allowed. States in which initialization is allowed are Init and Pre_Install. See in the manpage unwind(5). returns on an attempt to initialize a register for which initialization is forbidden. See the subsection above. Otherwise returns on suc- cessful completion. returns on successful completion. Otherwise returns when is not in one of the following states: Init, User_Interrupted_Frame, User_Send- sig_Frame, Kernel_Bottom_Frame, Frame. See unwind(5). and each return a register number. They return 0 (along with the side effect of setting the alert code to if passed a logical number which is outside of the range of mapped logical numbers for that register class. produces the following return codes: Indicates describes a frame beyond which the stack unwind library can no longer step. Any HP_UX kernel interruption frame other than the one associated with which supports user signal handling (see signal(5)) results in this return value. Indicates describes a frame beyond which the stack unwind library can no longer step. This return code is produced when is called for any describing a procedure whose frame is marked with the bottom of stack convention -- a saved return link of 0 (see "Chapter 11.1 Unwinding the stack"). All's well. Some generic problem occurred during step. This return code indicates the is in state Bad. See unwind(5) section Some logic problem occurred during step. Contact HP support. The instruction pointer value in is marked invalid. The probable cause is a failure to initialize it. This return code indicates the is in state Bad. See the section in unwind(5). The stack pointer value in is marked invalid. The probable cause is a failure to initialize it. This return code indicates the is in state Bad. See the section in unwind(5). A general register value which was marked invalid was encountered in during the step process. The probable cause is a failure to initialize it. This return code indicates the is in state Bad. See the section in unwind(5). The AR.PRS value in is marked invalid. The probable cause is a failure to initialize it. This return code indicates the is in state Bad. See the section in unwind(5). The AR.RSC value in is marked invalid. The probable cause is a failure to initialize it. This return code indicates the is in state Bad. See the section in unwind(5). The AR.BSP value in is marked invalid. The probable cause is a failure to initialize it. This return code indicates the is in state Bad. See the section in unwind(5). The AR.BSPSTORE value in is marked invalid. The probable cause is a failure to initialize it. This return code indicates the is in state Bad. See the section in unwind(5). The AR.CFM value in is marked invalid. The probable cause is a failure to initialize it. This return code indicates the is in state Bad. See the section in unwind(5). A branch register value which was marked invalid was encountered in during the step process. The probable cause is a failure to initialize it. This return code indicates the is in state Bad. See the section in unwind(5). The value ar.BSP was not aligned. This return code indicates the is in state Bad. See the section in unwind(5). The AR.RNAT value in is marked invalid. The probable cause is a failure to initialize it. This return code indicates the is in state Bad. See the section in unwind(5). The stack unwind library could not find an unwind descriptor for a procedure which the stack unwind library can prove is not a leaf procedure. All non-leaf procedures are required to have unwind descriptors. Some but not all possible causes for this include o code that does not conform to the coding conventions specified in "Chapter 11.3 Coding conventions for reliable unwinding". o failure of a callback function (see unwind(5)) to identify the location of the unwind header or text segment base o corrupted system memory o initialization of the with incorrect values The unwind descriptor for the frame was mis-formed. This return code indicates the is in state Bad. See the section in unwind(5). The register stack engine was not flushed. See unwind(5). This return code indicates the is in state Bad. See the section in unwind(5). has the following return codes: All's well. A generic problem occurred during a call to The unwind descriptor for the frame was mis-formed. This return code indicates the is in state Bad. See the section in unwind(5). The stack unwind library cannot allocate enough memory to perform the function requested. is in state Bad. See unwind(5). Some logic problem occurred during step. Contact HP support. ERRORS
fails gracefully (that is, returns an appropriate error) if there is not enough memory to perform the initialization or a library interac- tion problem (for example, calls to the service manager or prevents from performing the initialization. EXAMPLES
Initialize the value of General Register 5 to 400: AUTHOR
and were developed by HP. SEE ALSO
U_STACK_TRACE(3X), _UNW_createContextForSelf(3X), _UNW_getGR(3X), unwind(5). Integrity Systems Only _UNW_currentContext(3X)
Man Page