| Index: util/mach/mach_extensions.h
|
| diff --git a/util/mach/mach_extensions.h b/util/mach/mach_extensions.h
|
| index 81e9a86a97f6f72b486f53606e3d594827010696..038904bf30767d953d31e0da94ef9421a0a239e2 100644
|
| --- a/util/mach/mach_extensions.h
|
| +++ b/util/mach/mach_extensions.h
|
| @@ -28,6 +28,14 @@ namespace crashpad {
|
| //! assertions.
|
| const mach_port_t kMachPortNull = MACH_PORT_NULL;
|
|
|
| +//! \brief `MACH_EXCEPTION_CODES` with the correct type for a Mach exception
|
| +//! behavior, `exception_behavior_t`.
|
| +//!
|
| +//! Signedness problems can occur when ORing `MACH_EXCEPTION_CODES` as a signed
|
| +//! integer, because a signed integer overflow results. This constant can be
|
| +//! used instead of `MACH_EXCEPTION_CODES` in such cases.
|
| +const exception_behavior_t kMachExceptionCodes = MACH_EXCEPTION_CODES;
|
| +
|
| // Because exception_mask_t is an int and has one bit for each defined
|
| // exception_type_t, it’s reasonable to assume that there cannot be any
|
| // officially-defined exception_type_t values higher than 31.
|
| @@ -39,6 +47,26 @@ const mach_port_t kMachPortNull = MACH_PORT_NULL;
|
| //! \brief An exception type to use for simulated exceptions.
|
| const exception_type_t kMachExceptionSimulated = 'CPsx';
|
|
|
| +//! \brief Like `mach_thread_self()`, but without the obligation to release the
|
| +//! send right.
|
| +//!
|
| +//! `mach_thread_self()` returns a send right to the current thread port,
|
| +//! incrementing its reference count. This burdens the caller with maintaining
|
| +//! this send right, and calling `mach_port_deallocate()` when it is no longer
|
| +//! needed. This is burdensome, and is at odds with the normal operation of
|
| +//! `mach_task_self()`, which does not increment the task port’s reference count
|
| +//! whose result must not be deallocated.
|
| +//!
|
| +//! Callers can use this function in preference to `mach_thread_self()`. This
|
| +//! function returns an extant reference to the current thread’s port without
|
| +//! incrementing its reference count.
|
| +//!
|
| +//! \return The value of `mach_thread_self()` without incrementing its reference
|
| +//! count. The returned port must not be deallocated by
|
| +//! `mach_port_deallocate()`. The returned value is valid as long as the
|
| +//! thread continues to exist as a `pthread_t`.
|
| +mach_port_t MachThreadSelf();
|
| +
|
| } // namespace crashpad
|
|
|
| #endif // CRASHPAD_UTIL_MACH_MACH_EXTENSIONS_H_
|
|
|