portfeatures
—
the __HAVEs (and the have nots)
Machine-independent kernel code adapts to differences in hardware capabilities
provided by the machine-dependent parts of the kernel. A port declares its
capabilities by defining various
__HAVE_
feature macros. This
manual page provides an index of such macros with pointers to other manual
pages in the kernel section that provide all the relevant details.
__HAVE_MUTEX_STUBS
(mutex(9))
- The port provides fast path mutex enter and exit stubs.
__HAVE_PREEMPTION
(cpu_need_resched(9))
- The port can preempt kernel lwps with
RESCHED_KPREEMPT
.
__HAVE_PTRACE_MACHDEP
- The port has MD ptrace(2)
requests, defines
PTRACE_MACHDEP_REQUEST_CASES
macro with case
labels for its MD requests.
__HAVE_RAS
(ras(9))
- The port supports restartable atomic sequences.
__HAVE_SIMPLE_MUTEXES
(mutex(9))
- The port provides a CAS function that is either MP-safe, or does not need
to be MP safe. Adaptive mutexes on these architectures do not require an
additional interlock.
__HAVE_SPIN_MUTEX_STUBS
(mutex(9))
- The port provides fast path enter and exit stubs for spin mutexes.
__HAVE_UCAS_FULL
(ucas(9))
- The port provides a full implementation of the low-level primitives
required for atomic compare-and-swap operations to user-space
addresses.
__HAVE_UCAS_MP
(ucas(9))
- The port does not provide a full implementation of the low-level
primitives required for atomic compare-and-swap operations to user-space
addresses, but does provide an implementation of those primitives that can
be used if (and only if) the system has more than one processor.