NAME
iac
SYNOPSIS
#include <charm.h>
Status iac( marshall_regs *regs, int arena_id )
struct marshall_regsPARAMETERS
marshall_regs a pointer to the data to be passed in the registers.
arena_id denotes the callee arena.
DESCRIPTION
The iac function is used to transfer control and registers from one arena to another. When the call is made, control is passed from the calling to the callee arena and the rest of the timeslice is given over to the callee arena.
An iac call is succesful if the callee arena is valid and has set an entry point using the arena_set_iac_upcall() function. Registers are preserved across the iac.
RETURN VALUES
A successful iac call never returns.
ERRORS
The iac call may returns the following failures:
[NO_SUCH_ARENA] occurs if the arena specified does not exist.
[IAC_NO_ENTRY] occurs if no entry point has been set in the callee using arena_set_iac_upcall().
USAGE FROM ASSEMBLY LANGUAGE
When calling from assembly language, push the parameter for the iac call onto the stack, this frees the registers for use in data transfer. Once registers are initialized an LCALL instruction may be performed which does not require the use of registers.
RELATED INFORMATION