#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 ***************************************************************************** ** ** Copyright 2003 Hewlett-Packard Development Company, L.P. ** ** Confidential computer software. Valid license from HP and/or ** its subsidiaries required for possession, use, or copying. ** ** Consistent with FAR 12.211 and 12.212, Commercial Computer Software, ** Computer Software Documentation, and Technical Data for Commercial ** Items are licensed to the U.S. Government under vendor's standard ** commercial license. ** ** Neither HP nor any of its subsidiaries shall be liable for technical ** or editorial errors or omissions contained herein. The information ** in this document is provided "as is" without warranty of any kind and ** is subject to change without notice. The warranties for HP products ** are set forth in the express limited warranty statements accompanying ** such products. Nothing herein should be construed as constituting an ** additional warranty. ** ***************************************************************************** */ #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 # pragma __pointer_size __save # pragma __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 __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; #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 && __INITIAL_POINTER_SIZE == 64 #define writev(__P1,__P2,__P3) __writev64(__P1,__P2,__P3) #endif #if __CRTL_VER >= 70311000 # if __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 && __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 /* ** Restore the users pointer context */ #if __INITIAL_POINTER_SIZE # pragma __pointer_size __restore #endif #ifdef __cplusplus } #endif #pragma __member_alignment __restore #pragma __standard #endif /* __UIO_LOADED */