sys_writev  [fs/read_write.c]


Writes a number of blocks to a file or device from multiple buffers.

Arguments

eax 146
ebx File descriptor.
ecx Pointer to an array of a properly initialized iovec structures:
struc iovec
{
.iov_base rd 1 ; Starting address
.iov_len  rd 1 ; Number of bytes
}

Buffers are processed and written in the order specified.
edx Number of iovec structures in the array pointed by ecx.

Return values

If the system call succeeds the return value is the number of bytes written.
If the system call fails the return value is one of the following errno values:

-EAGAIN Non-blocking I/O has been selected using O_NONBLOCK and the write would block.
-EBADF ebx is not a valid file descriptor or is not open for writing.
-EFAULT ecx is outside your accessible address space.
-EFBIG An attempt was made to write a file that exceeds the implementation-defined maximum file size or the process' file size limit, or to write at a position past the maximum allowed offset.
-EINTR The call was interrupted by a signal before any data was written.
-EINVAL ebx is attached to an object which is unsuitable for writing; or the file was opened with the O_DIRECT flag, and either the address specified in ecx, the value specified in edx, or the current file offset is not suitably aligned.
-or-
The sum of the iov_len values overflows an ssize_t value. Or, the vector count edx is less than zero or greater than the permitted maximum.
-EIO A low-level I/O error occurred while modifying the inode.
-ENOSPC The device containing the file referred to by ebx has no room for the data.
-EPIPE ebx is connected to a pipe or socket whose reading end is closed. When this happens the writing process will also receive a SIGPIPE signal. (Thus, the write return value is seen only if the program catches, blocks or ignores this signal.)

Remarks

n/a

Compatibility

n/a