There are some 64-bit I/O messages that are used with resource managers:
- _IO_READ64 and _IO_WRITE64 have repurposed a zero field to allow the
specification of the high 32 bits of length.
There are _IO_READ_GET_NBYTES() and _IO_WRITE_GET_NBYTES()
macros that calculate the number of bytes specified by _IO_READ, _IO_READ64,
_IO_WRITE, and _IO_WRITE64 messages.
For more information, see the
Handling Read and Write Messages
chapter in Writing a Resource Manager.
- _IO_UTIME64 defines a structure to handle 64-bit time_ts and to
support
futimens()
and
utimensat().
For more information, see
iofunc_utime().
- _IO_NOTIFY64 extends the structure to handle 64-bit sigevent structures; see
iofunc_notify().
- _IO_STAT repurposed a zero field to identify which format of stat structure
is requested:
#define _STAT_FORM_UNSET 0
#define _STAT_FORM_T32_2001 1
#define _STAT_FORM_T32_2008 2
#define _STAT_FORM_T64_2008 3
#if __PTR_BITS__ == 32
#define _STAT_FORM_SYS_2008 (_STAT_FORM_T32_2008)
#define _STAT_FORM_PREFERRED (_STAT_FORM_T32_2001)
#else
#define _STAT_FORM_SYS_2008 (_STAT_FORM_T64_2008)
#define _STAT_FORM_PREFERRED (_STAT_FORM_T64_2008)
#endif
and uses the MsgReply() status parameter to indicate which format was generated.
See
iofunc_stat_default().
Note:
The client side sends the 64-bit message types only when the data won't fit into the old message types.