NAME
SMR_PTR_GET,
SMR_PTR_GET_LOCKED,
SMR_PTR_SET_LOCKED —
safe memory reclamation pointer
API
SYNOPSIS
TYPE
SMR_PTR_GET(TYPE
*pptr);
TYPE
SMR_PTR_GET_LOCKED(TYPE
*pptr);
void
SMR_PTR_SET_LOCKED(TYPE
*pptr, TYPE v);
DESCRIPTION
The SMR_PTR macros are used for accessing SMR-protected pointers.
The macro
SMR_PTR_GET()
reads the pointer referenced by pptr for dereferencing
inside SMR read-side critical section.
SMR_PTR_GET_LOCKED()
reads the pointer referenced by pptr for dereferencing
inside writer context.
SMR_PTR_SET_LOCKED()
writes value v to the pointer referenced by
pptr. The operation issues a write-write memory
barrier with membar_producer(9) before the pointer write.
CONTEXT
SMR_PTR_GET(),
SMR_PTR_GET_LOCKED() and
SMR_PTR_SET_LOCKED() can be called during autoconf,
from process context, or from interrupt context.
SMR_PTR_GET() can be used from SMR
read-side critical section. SMR_PTR_GET_LOCKED() and
SMR_PTR_SET_LOCKED() can be used from writer
context.
SEE ALSO
HISTORY
The SMR_PTR macros first appeared in OpenBSD 6.5.