The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

sf_buf_alloc (9)
  • >> sf_buf_alloc (9) ( FreeBSD man: Ядро )

  • BSD mandoc
     

    NAME

    
    
    sf_buf
    
     - manage temporary kernel address space mapping for memory pages
    
     
    

    SYNOPSIS

       #include <sys/sf_buf.h>
    struct sf_buf * sf_buf_alloc (struct vm_page *m int flags);
    void sf_buf_free (struct sf_buf *sf);
    vm_offset_t sf_buf_kva (struct sf_buf *sf);
    struct vm_page * sf_buf_page (struct sf_buf *sf);
     

    DESCRIPTION

    The interface, historically the sendfile(2) buffer interface, allows kernel subsystems to manage temporary kernel address space mappings for physical memory pages. On systems with a direct memory map region (allowing all physical pages to be visible in the kernel address space at all times), the Vt struct sf_buf will point to an address in the direct map region; on systems without a direct memory map region, the Vt struct sf_buf will manage a temporary kernel address space mapping valid for the lifetime of the Vt struct sf_buf.

    Call sf_buf_alloc ();
    to allocate a Vt struct sf_buf for a physical memory page. sf_buf_alloc ();
    is not responsible for arranging for the page to be present in physical memory; the caller should already have arranged for the page to be wired, i.e., by calling vm_page_wire9. Several flags may be passed to sf_buf_alloc (:);

    SFB_CATCH
    Cause sf_buf_alloc ();
    to abort and return NULL if a signal is received waiting for a Vt struct sf_buf to become available.
    SFB_NOWAIT
    Cause sf_buf_alloc ();
    to return NULL rather than sleeping if a Vt struct sf_buf is not immediately available.
    SFB_CPUPRIVATE
    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 (.);

    Call sf_buf_free ();
    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).  

    SEE ALSO

    sendfile(2), vm_page_wire9  

    AUTHORS

    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 .


     

    Index

    NAME
    SYNOPSIS
    DESCRIPTION
    SEE ALSO
    AUTHORS


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру