Open System Services System Calls Reference Manual (G06.29+, H06.08+, J06.03+)
PUT_WRITEUPDATEX(2) OSS System Calls Reference Manual
Data from the application process’s array is written in the position indicated by the setting of the
current-record pointer. A call to this procedure typically follows a corresponding call to the
PUT_READX() or PUT_READUPDATEX() function. The current-record and next-record
pointers are not affected by the PUT_WRITEUPDATEX() procedure.
For magnetic tapes, PUT_WRITEUPDATEX() is used to replace a record in an already written
tape. The tape is backspaced one record; the data from the application process’s array is written
in that area.
For programming information about the WRITEUPDATEX procedure, see the Enscribe
Programmer’s Guide and the Guardian Programmer’s Guide.
To use this function on systems running J06.10 or later RVUs or H06.21 or later RVUs, you must
perform all of the following tasks:
• Include the pthread.h header file in the application.
• Compile the application using the _PUT_MODEL_ feature test macro or equivalent
compiler command option.
• Link the application to the zputdll library.
On systems running H06.24 or later H-series RVUs or J06.13 or later J-series RVUs, you can use
this function with 32-bit or 64-bit applications.
To use this function in a 32-bit application on systems running H06.24 or later RVUs or J06.13 or
later RVUs, perform the same tasks (described above) used to enable the function on systems
running H06.21/J06.10 or later RVUs.
To use this function in a 64-bit application on systems running H06.24 or later RVUs or J06.13 or
later RVUs, you must perform all of the following tasks:
• Include the pthread.h header file in the application.
• Compile the application using the _PUT_MODEL_ feature test macro or equivalent
compiler command option.
• Compile the application using the -Wlp64 compiler command option.
• Link the application to the yputdll library (/G/system/zdllnnn/yputdll).
Considerations
Buffer use PUT_WRITEUPDATEX() is intended for use with 32-bit extended addresses
and 64-bit extended addresses. The data buffer for PUT_WRITEUPDATEX()
can be either in the caller’s stack segment or any extended data segment.
I/O counts with unstructured files
Unstructured files are transparently blocked using one of the four valid block
sizes (512, 1024, 2048, or 4096 bytes; 4096 is the default). This transparent
block size, known as BUFFERSIZE, is the transfer size used against an unstruc-
tured file. While BUFFERSIZE does not change the maximum unstructured
transfer (4096 bytes), multiple I/O operations might be performed to satisfy a
user’s request depending on the BUFFERSIZE chosen. For example, if BUF-
FERSIZE is 512 bytes, and a request is made to write 4096 bytes, at least eight
transfers, each 512 bytes long, will be made. More than eight transfers happen,
in this case, if the requested transfer does not start on a BUFFERSIZE boundary.
DP2 performance with unstructured files is best when requested transfers begin
on BUFFERSIZE boundaries and are integral multiples of BUFFERSIZE.
Because the maximum blocksize for DP2 structured files is also 4096 bytes, this
5−306 Hewlett-Packard Company 527186-023