VOP_READ
,
VOP_WRITE
—
read or write a file
#include
<sys/param.h>
#include
<sys/vnode.h>
#include
<sys/uio.h>
int
VOP_READ
(
struct
vnode *vp,
struct uio *uio,
int ioflag,
struct ucred
*cred);
int
VOP_WRITE
(
struct
vnode *vp,
struct uio *uio,
int ioflag,
struct ucred
*cred);
These entry points read or write the contents of a file
The arguments are:
- vp
- The vnode of the file.
- uio
- The location of the data to be read or written.
- ioflag
- Various flags.
- cnp
- The credentials of the caller.
The
ioflag argument is used to give directives
and hints to the file system. When attempting a read, the high 16 bits are
used to provide a read-ahead hint (in units of file system blocks) that the
file system should attempt. The low 16 bits are a bit mask which can contain
the following flags:
IO_UNIT
- Do I/O as atomic unit.
IO_APPEND
- Append write to end.
IO_SYNC
- Do I/O synchronously.
IO_NODELOCKED
- Underlying node already locked.
IO_NDELAY
FNDELAY
flag set in file table.
IO_VMIO
- Data already in VMIO space.
The file should be locked on entry and will still be locked on exit.
Zero is returned on success, otherwise an error code is returned.
- [
EFBIG
]
- An attempt was made to write a file that exceeds the process's file size
limit or the maximum file size.
- [
ENOSPC
]
- The file system is full.
- [
EPERM
]
- An append-only flag is set on the file, but the caller is attempting to
write before the current end of file.
uiomove(9),
vnode(9)
This manual page was written by
Doug
Rabson.