sys_pwrite64 [fs/read_write.c]
Writes number of bytes to a device (file, socket, etc.) at the specified offset wiout advancing the current file position. Arguments
eax | 181
ebx | Device descriptor.
ecx | Pointer to the buffer containing the data to be written.
edx | Number of bytes to be written.
esi | The low order 32-bits of a signed value that specifies the offset.
edi | The high order 32-bits of a signed value that specifies the offset.
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 specified file offset is invalid.`
`-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 A successful return from sys_pwrite64 does not make any guarantee that data has been committed to disk. In fact, on some buggy implementations, it does not even guarantee that space has successfully been reserved for the data. The only way to be sure is to call sys_fsync after you are done writing all your data. Compatibility n/a