to abort and return
if a signal is received waiting for a
.Vt struct sf_buf to become available.
rather than sleeping if a
.Vt struct sf_buf is not immediately available.
|Cause sf_buf_alloc to only arrange that the temporary mapping be valid on the current CPU, avoiding unnecessary TLB shootdowns for mappings that will only be accessed on a single CPU at a time. The caller must ensure that accesses to the virtual address occur only on the CPU from which sf_buf_alloc was invoked, perhaps by using sched_pin.|
Call sf_buf_kva to return a kernel mapped address for the page.
Call sf_buf_page to return a pointer to the page originally passed into sf_buf_alloc.
to release the
.Vt struct sf_buf reference. The caller is responsible for releasing any wiring they have previously acquired on the physical page; sf_buf_free releases only the temporary kernel address space mapping, not the page itself.
Uses of this interface include managing mappings of borrowed pages from user memory, such as in zero-copy socket I/O, or pages of memory from the buffer cache referenced by mbuf external storage for sendfile(2).
.An -nosplit The
.Vt struct sf_buf API was designed and implemented by
.An Alan L. Cox . This manual page was written by
.An Robert N. M. Watson .