diff options
author | dhinton <dhinton@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-05-22 02:52:30 +0000 |
---|---|---|
committer | dhinton <dhinton@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-05-22 02:52:30 +0000 |
commit | f8e5d94ceae7cbe173a39c0ea993977771cb6c4e (patch) | |
tree | c9586b0b38b8179bc6f92792ce079d1fb5217c0d /ace/os_include/sys/uio.h | |
parent | cac4707bbbf6b80d7e88d84a0e76d2078236445c (diff) | |
download | ATCD-dre_osh_03.tar.gz |
ChangeLogTag:Thu May 22 02:28:28 UTC 2003 Don Hinton <dhinton@dresystems.com>dre_osh_03
Diffstat (limited to 'ace/os_include/sys/uio.h')
-rw-r--r-- | ace/os_include/sys/uio.h | 71 |
1 files changed, 65 insertions, 6 deletions
diff --git a/ace/os_include/sys/uio.h b/ace/os_include/sys/uio.h index d3fbd8ec31e..3da3a83a6a7 100644 --- a/ace/os_include/sys/uio.h +++ b/ace/os_include/sys/uio.h @@ -2,19 +2,19 @@ //============================================================================= /** - * @file uio.h + * @file os_uio.h * * definitions for vector I/O operations * * $Id$ * - * @author Don Hinton <dhinton@ieee.org> + * @author Don Hinton <dhinton@dresystems.com> * @author This code was originally in various places including ace/OS.h. */ //============================================================================= -#ifndef ACE_OS_INCLUDE_SYS_UIO_H -#define ACE_OS_INCLUDE_SYS_UIO_H +#ifndef ACE_OS_INCLUDE_SYS_OS_UIO_H +#define ACE_OS_INCLUDE_SYS_OS_UIO_H #include "ace/pre.h" @@ -27,8 +27,67 @@ #include "ace/os_include/sys/types.h" #if !defined (ACE_LACKS_SYS_UIO_H) -# include /**/ <sys/uio.h> +# include /**/ <sys/uio.h> #endif /* !ACE_LACKS_SYS_UIO_H */ +// Place all additions (especially function declarations) within extern "C" {} +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +// todo: make this a regular ACE_LACKS macro test... +#if defined(__rtems__) + struct iovec { + /// Base address. + char *iov_base; + /// Length. + size_t iov_len; + }; +#elif defined (ACE_WIN32) + /// The ordering of the fields in this struct is important. It has to + /// match those in WSABUF. + struct iovec + { + /// byte count to read/write + u_long iov_len; + /// data to be read/written + char *iov_base; + + // WSABUF is a Winsock2-only type. +# if defined (ACE_HAS_WINSOCK2) && (ACE_HAS_WINSOCK2 != 0) + operator WSABUF &(void) { return *((WSABUF *) this); } +# endif /* defined (ACE_HAS_WINSOCK2) && (ACE_HAS_WINSOCK2 != 0) */ + }; +#endif /* __rtems__ */ + + +#if defined (ACE_HAS_BROKEN_WRITEV) + typedef struct iovec ACE_WRITEV_TYPE; +#else + typedef const struct iovec ACE_WRITEV_TYPE; +#endif /* ACE_HAS_BROKEN_WRITEV */ + +#if defined (ACE_HAS_BROKEN_READV) + typedef const struct iovec ACE_READV_TYPE; +#else + typedef struct iovec ACE_READV_TYPE; +#endif /* ACE_HAS_BROKEN_READV */ + +// This is defined by XOPEN to be a minimum of 16. POSIX.1g +// also defines this value. platform-specific config.h can +// override this if need be. +#if !defined (IOV_MAX) +# define IOV_MAX 16 +#endif /* IOV_MAX */ + +#if !defined (ACE_IOV_MAX) +# define ACE_IOV_MAX IOV_MAX +#endif /* ACE_IOV_MAX */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + #include "ace/post.h" -#endif /* ACE_OS_INCLUDE_SYS_UIO_H */ +#endif /* ACE_OS_INCLUDE_SYS_OS_UIO_H */ |