The OpenNET Project / Index page

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

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

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

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

    NAME

    physio, minphys - perform physical I/O
     
    

    SYNOPSIS

    #include <sys/types.h>
    #include <sys/buf.h>
    #include <sys/uio.h>
    
    
    
    int physio(int(*strat)(struct buf *), struct buf *bp, dev_t dev, 
        int rw, void (*mincnt)(struct buf *), struct uio *uio);
    

    void minphys(struct buf *bp);
    

     

    INTERFACE LEVEL

    Solaris DDI specific (Solaris DDI).  

    PARAMETERS

     

    physio()

    strat

    Pointer to device strategy routine.

    bp

    Pointer to a buf(9S) structure describing the transfer. If bp is set to NULL then physio() allocates one which is automatically released upon completion.

    dev

    The device number.

    rw

    Read/write flag. This is either B_READ when reading from the device, or B_WRITE when writing to the device.

    mincnt

    Routine which bounds the maximum transfer unit size.

    uio

    Pointer to the uio structure which describes the user I/O request.

     

    minphys()

    bp

    Pointer to a buf structure.

     

    DESCRIPTION

    physio() performs unbuffered I/O operations between the device dev and the address space described in the uio structure.

    Prior to the start of the transfer physio() verifies the requested operation is valid by checking the protection of the address space specified in the uio structure. It then locks the pages involved in the I/O transfer so they can not be paged out. The device strategy routine, strat(), is then called one or more times to perform the physical I/O operations. physio() uses biowait(9F) to block until strat() has completed each transfer. Upon completion, or detection of an error, physio() unlocks the pages and returns the error status.

    physio() uses mincnt() to bound the maximum transfer unit size to the system, or device, maximum length. minphys() is the system mincnt() routine for use with physio() operations. Drivers which do not provide their own local mincnt() routines should call physio() with minphys().

    minphys() limits the value of bp->b_bcount to a sensible default for the capabilities of the system. Drivers that provide their own mincnt() routine should also call minphys() to make sure they do not exceed the system limit.  

    RETURN VALUES

    physio() returns:

    0

    Upon success.

    non-zero

    Upon failure.

     

    CONTEXT

    physio() can be called from user context only.  

    SEE ALSO

    strategy(9E), biodone(9F), biowait(9F), buf(9S), uio(9S)

    Writing Device Drivers  

    WARNINGS

    Since physio() calls biowait() to block until each buf transfer is complete, it is the drivers responsibility to call biodone(9F) when the transfer is complete, or physio() will block forever.


     

    Index

    NAME
    SYNOPSIS
    INTERFACE LEVEL
    PARAMETERS
    physio()
    minphys()
    DESCRIPTION
    RETURN VALUES
    CONTEXT
    SEE ALSO
    WARNINGS


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




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

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