Open System Services System Calls Reference Manual (G06.29+, H06.08+, J06.03+)
System Functions (s and S) spt_writex(2)
Upon successful completion, the spt_writex() function marks the st_ctime and st_mtime fields
of the file for update and clears the set-user-ID and set-group-ID attributes if the file is a regular
file.
The spt_fcntlx() function provides more information about record locks.
If it is interrupted by a signal before it writes any data, the spt_writex() function returns the
value -1 with errno set to [EINTR]. If it is interrupted by a signal after it has successfully written
some data, the spt_writex() function returns the number of bytes that it has written.
Use on Guardian Objects
Attempting to write to a Guardian file (that is, a file in /G) that is locked causes the spt_writex()
function to return -1 and set errno to [EGUARDIANLOCKED].
NOTES
For C applications, a macro to map write( ) to spt_writex() is available when you use the
#define SPT_THREAD_AWARE_NONBLOCK preprocessor directive before including
spthread.h or when you use an equivalent compiler command option to compile the application.
For C++ applications, an alias to map write( ) to spt_writex() is available when you use the
#define SPT_THREAD_AWARE_PRAGMA_NONBLOCK preprocessor directive before
including spthread.h or when you use an equivalent compiler command option to compile the
application.
RETURN VALUES
Upon successful completion, the spt_writex() function returns the number of bytes that were
actually written. Otherwise, the value -1 is returned, and errno is set to indicate the error.
If the file descriptor becomes invalid (is closed by another thread), -1 is returned with an errno
value of [EBADF]. If a signal is received via the pthread_kill() function and is not blocked,
ignored, or handled, -1 is returned with an errno value of [EINTR].
ERRORS
If any of these conditions occur, the spt_writex() function sets errno to the corresponding value:
[EAGAIN] One of these conditions exists:
• An attempt was made to write to a file descriptor that cannot accept data,
and the O_NONBLOCK flag is set.
• A write to a pipe (FIFO file) of PIPE_BUF bytes or less is requested,
O_NONBLOCK is set, and fewer than nbytes of free space are avail-
able.
• The O_NONBLOCK flag is set on this file, and the process would be
delayed in the write operation.
[EALREADY] Operation already in progress. An I/O operation started by a thread-aware func-
tion (such as spt_writez()) is in progress on a regular file and a function that is
process-blocking for regular files (such as read(), spt_read(),orspt_readx())
attempts to begin an I/O operation on the same open file.
[EBADF] The filedes parameter does not specify a valid file descriptor open for writing.
[ECONNRESET]
One of these conditions occurred:
• The transport-provider process for this socket is no longer available.
• The TCP/IP subsystem for this socket is no longer available.
527186-023 Hewlett-Packard Company 7−485