DOFILEREAD(9)          NetBSD Kernel Developer's Manual          DOFILEREAD(9)

NAME
     dofileread, dofilereadv, dofilewrite, dofilewritev -- high-level file
     operations

SYNOPSIS
     #include <sys/file.h>

     int
     dofileread(struct lwp *l, int fd, struct file *fp, void *buf,
         size_t nbyte, off_t *offset, int flags, register_t *retval);

     int
     dofilewrite(struct lwp *l, int fd, struct file *fp, const void *buf,
         size_t nbyte, off_t *offset, int flags, register_t *retval);

     int
     dofilereadv(struct lwp *l, int fd, struct file *fp,
         const struct iovec *iovp, int iovcnt, off_t *offset, int flags,
         register_t *retval);

     int
     dofilewritev(struct lwp *l, int fd, struct file *fp,
         const struct iovec *iovp, int iovcnt, off_t *offset, int flags,
         register_t *retval);

DESCRIPTION
     The functions implement the underlying functionality of the read(2),
     write(2), readv(2), and writev(2) system calls.  They are also used
     throughout the kernel as high-level access routines for file I/O.

     The dofileread() function attempts to read nbytes of data from the object
     referenced by file entry fp into the buffer pointed to by buf.  The
     dofilewrite() function attempts to write nbytes of data to the object
     referenced by file entry fp from the buffer pointed to by buf.

     The dofilereadv() and dofilewritev() functions perform the same opera-
     tions, but scatter the data with the iovcnt buffers specified by the mem-
     bers of the iov array.

     The offset of the file operations is explicitly specified by *offset.
     The new file offset after the file operation is returned in *offset.  If
     the FOF_UPDATE_OFFSET flag is specified in the flags argument, the file
     offset in the file entry fp is updated to reflect the new file offset,
     otherwise it remains unchanged after the operation.

     The file descriptor fd is largely unused except for use by the ktrace
     framework for reporting to userlevel the process's file descriptor.

     Upon successful completion the number of bytes which were transferred is
     returned in *retval.

RETURN VALUES
     Upon successful completion zero is returned, otherwise an appropriate
     error is returned.

CODE REFERENCES
     This section describes places within the NetBSD source tree where actual
     code implementing or using these file operations can be found.  All path-
     names are relative to /usr/src.

     The framework for these file operations is implemented within the file
     sys/kern/sys_generic.c.

SEE ALSO
     file(9)

NetBSD 5.0_STABLE              December 20, 2005             NetBSD 5.0_STABLE
