The OpenNET Project / Index page

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

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

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

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

    NAME

    uio - scatter/gather I/O request structure
     
    

    SYNOPSIS

    #include <sys/uio.h> 
    

     

    INTERFACE LEVEL

    Architecture independent level 1 (DDI/DKI)  

    DESCRIPTION

    A uio structure describes an I/O request that can be broken up into different data storage areas (scatter/gather I/O). A request is a list of iovec structures (base-length pairs) indicating where in user space or kernel space the I/O data is to be read or written.

    The contents of uio structures passed to the driver through the entry points should not be written by the driver. The uiomove(9F) function takes care of all overhead related to maintaining the state of the uio structure.

    uio structures allocated by the driver should be initialized to zero before use, by bzero(9F), kmem_zalloc(9F), or an equivalent.  

    STRUCTURE MEMBERS

    iovec_t      *uio_iov;      /* pointer to start of iovec */
                               /* list for uio struc. */
    int          uio_iovcnt;    /* number of iovecs in list */
    off_t        uio_offset;    /* 32-bit offset into file where 
                               /* data is xferred. See NOTES. */
    offset_t     uio_loffset;   /* 64-bit offset into file where */
                               /* data is xferred. See NOTES. */
    uio_seg_t    uio_segflg;    /* ID's type of I/O transfer: */
                               /* UIO_SYSSPACE:  kernel <-> kernel */
                               /* UIO_USERSPACE: kernel <-> user */
    short        uio_fmode;     /* file mode flags (not driver setable) */
    daddr_t      uio_limit;     /* 32-bit ulimit for file (max. block */
                               /* offset). not driver setable. */
                               /* See NOTES. */
    diskaddr_t   uio_llimit;    /* 64-bit ulimit for file (max. block */
                               /* offset). not driver setable. */
                               /* See NOTES */
    int          uio_resid;     /* residual count */
    

    The uio_iov member is a pointer to the beginning of the iovec(9S) list for the uio. When the uio structure is passed to the driver through an entry point, the driver should not set uio_iov. When the uio structure is created by the driver, uio_iov should be initialized by the driver and not written to afterward.  

    SEE ALSO

    aread(9E), awrite(9E), read(9E), write(9E), bzero(9F), kmem_zalloc(9F), uiomove(9F), cb_ops(9S), iovec(9S)

    Writing Device Drivers  

    NOTES

    Only one structure, uio_offset or uio_loffset, should be interpreted by the driver. Which field the driver interprets is dependent upon the settings in the cb_ops(9S) structure.

    Only one structure, uio_limit or uio_llimit, should be interpreted by the driver. Which field the driver interprets is dependent upon the settings in the cb_ops(9S) structure.

    When performing I/O on a seekable device, the driver should not modify either the uio_offset or the uio_loffset field of the uio structure. I/O to such a device is constrained by the maximum offset value. When performing I/O on a device on which the concept of position has no relevance, the driver may preserve the uio_offset or uio_loffset, perform the I/O operation, then restore the uio_offset or uio_loffset to the field's initial value. I/O performed to a device in this manner is not constrained.


     

    Index

    NAME
    SYNOPSIS
    INTERFACE LEVEL
    DESCRIPTION
    STRUCTURE MEMBERS
    SEE ALSO
    NOTES


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




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

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