I/O messages

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.
Page updated: