thread_swap_exception_ports
Function - Swap exception ports for a thread.
SYNOPSIS
kern_return_t thread_swap_exception_ports
(thread_act_t thread,
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
- thread
-
[in thread send right]
The thread 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.
- exception_port
-
[in exception send right]
The exception port for all selected exception
types.
- behavior
-
[in scalar]
Control of the behavior of the exception processing. Defined
types are:
- EXCEPTION_DEFAULT
-
Send a catch_exception_raise message including the thread
identity.
- EXCEPTION_DEFAULT_PROTECTED
-
Send a catch_exception_raise message including the thread
identity. Mark the exception port (and associated exceptions)
as protected.
- 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 \*L\*O.
- 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
\*L\*O.
DESCRIPTION
The thread_swap_exception_ports function sets a specified
set of exception
ports belonging to thread, returning the old set.
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.
A "protected" exception port is one which cannot be fetched and for which
exception processing cannot be aborted (thread_abort).
RETURN VALUES
- KERN_EXCEPTION_PROTECTED
-
One of the requested exception ports is protected and cannot be returned.
RELATED INFORMATION
Functions:
mach_thread_self,
task_get_exception_ports,
task_set_exception_ports,
task_swap_exception_ports,
thread_create,
thread_get_exception_ports,
thread_set_exception_ports,
catch_exception_raise,
thread_abort.