PORTFEATURES(9)

NAME
portfeatures - the __HAVEs (and the have nots)

DESCRIPTION
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_PROCFS_MACHDEP
    The port has MD procfs nodes, defines additional values for the pfstype enum for each type.

__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.