Back to Darwin Xnu

Task Swap Exception Ports

osfmk/man/task_swap_exception_ports.html

latest4.2 KB
Original Source

task_swap_exception_ports


Function - Set target task's exception ports, returning the previous exception ports.

SYNOPSIS

**kern\_return\_t task\_swap\_exception\_ports**** (task\_t **task,** exception\_mask\_t **exception\_types,** mach\_port\_t **exception\_port,** exception\_behavior\_t **behavior,** thread\_state\_flavor\_t **flavor,** exception\_mask\_array\_t **old\_exception\_masks,** old\_exception\_masks **old\_exception\_count,** exception\_port\_array\_t **old\_exception\_ports,** exception\_behavior\_array\_t **old\_behaviors,** exception\_flavor\_array\_t **old\_flavors** );**

PARAMETERS

task[in task send right] The task for which to set the ports.

exception_types[in scalar] A flag word indicating the types of exceptions for which the exception port applies:

EXC_MASK_BAD_ACCESS Could not access memory.

EXC_MASK_BAD_INSTRUCTION Instruction failed. Illegal or undefined instruction or operand.

EXC_MASK_ARITHMETIC Arithmetic exception

EXC_MASK_EMULATION Emulation instruction. Emulation support instruction encountered.

EXC_MASK_SOFTWARE Software generated exception.

EXC_MASK_BREAKPOINT Trace, breakpoint, etc.

EXC_MASK_SYSCALL System call requested.

EXC_MASK_MACH_SYSCALL System call with a number in the Mach call range requested.

EXC_MASK_RPC_ALERT Exceptional condition encountered during execution of RPC.

exception_port[in exception send right] The exception port for all selected exception types.

behavior[in scalar] The type of exception message to be sent. Defined types are:

EXCEPTION_DEFAULT Send a catch_exception_raise message including the thread identity.

EXCEPTION_STATE Send a catch_exception_raise_state message including the thread state.

EXCEPTION_STATE_PROTECTED Send a catch_exception_raise_state message including the thread state. Mark the exception port (and associated exceptions) as protected.

EXCEPTION_STATE_IDENTITY Send a catch_exception_raise_state_identity message including the thread identity and state.

EXCEPTION_STATE_IDENTITY_PROTECTED Send a catch_exception_raise_state_identity message including the thread identity and state. Mark the exception port (and associated exceptions) as protected.

flavor[in scalar] The type of state to be sent with the exception message. These types are defined in &ltmach/thread_states.h&gt.

old_exception_masks[out array of exception_mask_t] An array, each element being a mask specifying for which exception types the corresponding element of the other arrays apply.

old_exception_count[pointer to in/out scalar] On input, the maximum size of the array buffers; on output, the number of returned sets returned.

old_exception_ports[out array of exception send rights] The returned exception ports.

old_behaviors[out array of exception_behavior_t] The type of exception message to be sent as with behavior.

old_flavors[out array of thread_state_flavor_t] The type of state to be sent with the exception message. These types are defined in &ltmach/thread_states.h&gt.

DESCRIPTION

The task_swap_exception_ports function sets a specified set of exception ports belonging to task, returning the old set. A task exception port is used when a thread specific exception port returns a non-success reply.

NOTES

If the value of the EXC_MACH_SYSCALL exception class exception port is the host name port, Mach kernel traps are executed by the kernel as expected; any other value causes the attempted execution of these system call numbers to be considered an exception.

RETURN VALUES

Only generic errors apply.

Functions: mach_task_self, task_get_exception_ports, task_set_exception_ports, thread_create, thread_get_exception_ports, thread_set_exception_ports, thread_swap_exception_ports, catch_exception_raise, thread_abort.