#ifndef __UIO_LOADED #define __UIO_LOADED 1 /**************************************************************************** ** ** - definitions for vector I/O operations ** ***************************************************************************** ** Header introduced by the X/Open CAE Specification, Issue 4, Version 2 ***************************************************************************** ** * ** HPE CONFIDENTIAL. This software is confidential proprietary software * ** licensed by Hewlett Packard Enterprise Development, LP, and is not * ** authorized to be used, duplicated or disclosed to anyone without the * ** prior written permission of HPE. * ** Copyright 2003 Hewlett Packard Enterprise Development, LP * ** * ** VMS SOFTWARE, INC. CONFIDENTIAL. This software is confidential * ** proprietary software licensed by VMS Software, Inc., and is not * ** authorized to be used, duplicated or disclosed to anyone without * ** the prior written permission of VMS Software, Inc. * ** Copyright 2022-2023 VMS Software, Inc. * ** * ***************************************************************************** */ #pragma __nostandard #include #ifdef __cplusplus extern "C" { #endif /* ** All structures should be member aligned on natural boundaries */ #pragma __member_alignment __save #pragma __member_alignment #if __INITIAL_POINTER_SIZE || defined(__clang__) # pragma __required_pointer_size __save # pragma __required_pointer_size 64 /* * 64-bit version of the iovec structure that is required to be used with the * 64-bit interface routines _readv64 and __writev64 */ #ifdef _XOPEN_SOURCE_EXTENDED struct __iovec64 { __void_ptr64 iov_base; __size_t iov_len; }; struct __Oiovec64 { #else struct __iovec64 { #endif __char_ptr64 iov_base; int iov_len; }; typedef struct iovec * __iovec_ptr64; typedef struct __iovec64 * __iovec64_ptr64; typedef const struct __iovec64 * __const_iovec64_ptr64; typedef struct __iovec64 __iovec64_t; #pragma __required_pointer_size 32 /* * 32-bit version of the iovec structure that is required to be used with the * 32-bit interface routines _readv32 and __writev32 */ #ifdef _XOPEN_SOURCE_EXTENDED struct __iovec32 { __void_ptr32 iov_base; __size_t iov_len; }; struct __Oiovec32 { #else struct __iovec32 { #endif __char_ptr32 iov_base; int iov_len; }; typedef struct iovec * __iovec_ptr32; typedef struct __iovec32 * __iovec32_ptr32; typedef const struct __iovec32 * __const_iovec32_ptr32; typedef struct __iovec32 __iovec32_t; /* ** Restore the users pointer context */ #pragma __required_pointer_size __restore #endif /* ** Iovec Structure: I/O buffer element for vector I/O operations. ** ** The iovec structure describes one scatter/gather buffer. ** Multiple scatter/gather buffer descriptors are stored as an ** array of iovec elements. */ #ifdef _XOPEN_SOURCE_EXTENDED struct iovec { void *iov_base; /* A pointer to a buffer. */ __size_t iov_len; /* The size of the buffer to which ** iov_base points */ }; struct __Oiovec { #else struct iovec { #endif char *iov_base; int iov_len; }; typedef struct iovec * __iovec_ptr; typedef const struct iovec * __const_iovec_ptr; #if __CRTL_VER >= 70300000 __ssize_t writev(int __fildes, const struct iovec *__iov, int __iovcnt); #endif #if __CRTL_VER >= 70311000 && ((defined(__clang__) && (__INITIAL_POINTER_SIZE != 32)) || (__INITIAL_POINTER_SIZE == 64)) # define writev(__P1,__P2,__P3) __writev64(__P1,__P2,__P3) #endif #if __CRTL_VER >= 70311000 # if ((defined(__clang__) && (__INITIAL_POINTER_SIZE != 32)) || (__INITIAL_POINTER_SIZE == 64)) __ssize_t readv(int __fildes, __const_iovec64_ptr64 __iov, int __iovcnt); # else __ssize_t readv(int __fildes, __const_iovec_ptr __iov, int __iovcnt); # endif #endif #if (__INITIAL_POINTER_SIZE || defined(__clang__)) && __CRTL_VER >= 70311000 __ssize_t _readv32(int __fildes, __const_iovec32_ptr32 __iov, int __iovcnt); __ssize_t __writev32(int __fildes, __const_iovec32_ptr32 __iov, int __iovcnt); __ssize_t _readv64(int __fildes, __const_iovec64_ptr64 __iov, int __iovcnt); __ssize_t __writev64(int __fildes, __const_iovec64_ptr64 __iov, int __iovcnt); #endif #ifdef __cplusplus } #endif #pragma __member_alignment __restore #pragma __standard #endif /* __UIO_LOADED */