directio(3c) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

directio(3c)

directio(3C)             Standard C Library Functions             directio(3C)

NAME
       directio - provide advice to file system

SYNOPSIS
       #include <sys/types.h>
       #include <sys/fcntl.h>

       int directio(int fildes, int advice);

DESCRIPTION
       The  directio()  function  provides  advice to the system about the ex‐
       pected behavior of the application when accessing the data in the  file
       associated  with  the open file descriptor fildes. The system uses this
       information to help optimize accesses to the file's  data.  The  direc‐
       tio()  function  has no effect on the semantics of the other operations
       on the data, though it may affect the performance of other operations.


       The advice argument is kept per file; the  last  caller  of  directio()
       sets  the  advice  for  all applications using the file associated with
       fildes.


       Values for advice are defined in <sys/fcntl.h>.

       DIRECTIO_OFF    Applications get the default system behavior  when  ac‐
                       cessing file data.

                       When an application reads data from a file, the data is
                       first  cached in system memory and then copied into the
                       application's buffer (see read(2)). If the  system  de‐
                       tects that the application is reading sequentially from
                       a  file,  the  system  will asynchronously "read ahead"
                       from the file into system memory so the data is immedi‐
                       ately available for the next read(2) operation.

                       When an application writes data into a file,  the  data
                       is  first cached in system memory and is written to the
                       device at a later time (see write(2)).  When  possible,
                       the system increases the performance of write(2) opera‐
                       tions  by caching the data in memory pages. The data is
                       copied into system memory and  the  write(2)  operation
                       returns  immediately  to  the  application. The data is
                       later written asynchronously to the device. When possi‐
                       ble, the cached data is "clustered" into  large  chunks
                       and written to the device in a single write operation.

                       The system behavior for DIRECTIO_OFF can change without
                       notice.


       DIRECTIO_ON     The system behaves as though the application is not go‐
                       ing to reuse the file data in the near future. In other
                       words, the file data is not cached in the system's mem‐
                       ory pages.

                       When possible, data is read or written directly between
                       the  application's  memory and the device when the data
                       is accessed with read(2) and write(2) operations.  When
                       such  transfers  are  not possible, the system switches
                       back to the default behavior, but just for that  opera‐
                       tion. In general, the transfer is possible when the ap‐
                       plication's  buffer  is  aligned  on a two-byte (short)
                       boundary, the offset into the file is on a device  sec‐
                       tor boundary, and the size of the operation is a multi‐
                       ple of device sectors.

                       This advisory is ignored while the file associated with
                       fildes is mapped (see mmap(2)).

                       The  system behavior for DIRECTIO_ON can change without
                       notice.


RETURN VALUES
       Upon successful completion, directio() returns 0. Otherwise, it returns
       −1 and sets errno to indicate the error.

ERRORS
       The directio() function will fail if:

       EBADF     The fildes argument is not a valid open file descriptor.


       ENOTTY    The fildes argument is not associated with a file system that
                 accepts advisory functions.


       EINVAL    The value in advice is invalid.


USAGE
       Small sequential I/O generally performs best with DIRECTIO_OFF.


       Large sequential I/O generally performs best with  DIRECTIO_ON,  except
       when a file is sparse or is being extended and is opened with O_SYNC or
       O_DSYNC (see open(2)).


       The  directio()  function  is supported for the NFS and UFS file system
       types (see fstyp(8)).

ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:

       tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE  TYPEAT‐
       TRIBUTE VALUE _ MT-LevelMT-Safe


SEE ALSO
       mmap(2),  open(2),  read(2),  write(2),  fcntl.h(3HEAD), attributes(7),
       fstyp(8)

WARNINGS
       Switching between DIRECTIO_OFF and DIRECTIO_ON can slow the system  be‐
       cause  each switch to DIRECTIO_ON might entail flushing the file's data
       from the system's memory.

Oracle Solaris 11.4               13 Nov 2020                     directio(3C)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3