1 /**
2 * D header file for POSIX.
3 *
4 * Copyright: Copyright Sean Kelly 2005 - 2009.
5 * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
6 * Authors: Sean Kelly, Alex Rønne Petersen
7 * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
8 */
9
10 /* Copyright Sean Kelly 2005 - 2009.
11 * Distributed under the Boost Software License, Version 1.0.
12 * (See accompanying file LICENSE or copy at
13 * http://www.boost.org/LICENSE_1_0.txt)
14 */
15 module core.sys.posix.sys.uio;
16
17 import core.sys.posix.config;
18 public import core.sys.posix.sys.types; // for ssize_t
19
20 version (OSX)
21 version = Darwin;
22 else version (iOS)
23 version = Darwin;
24 else version (TVOS)
25 version = Darwin;
26 else version (WatchOS)
27 version = Darwin;
28
version(Posix)29 version (Posix):
30 extern (C) nothrow @nogc:
31 @system:
32
33 //
34 // Required
35 //
36 /*
37 struct iovec
38 {
39 void* iov_base;
40 size_t iov_len;
41 }
42
43 ssize_t // from core.sys.posix.sys.types
44 size_t // from core.sys.posix.sys.types
45
46 ssize_t readv(int, const scope iovec*, int);
47 ssize_t writev(int, const scope iovec*, int);
48 */
49
50 version (CRuntime_Glibc)
51 {
52 struct iovec
53 {
54 void* iov_base;
55 size_t iov_len;
56 }
57
58 ssize_t readv(int, const scope iovec*, int);
59 ssize_t writev(int, const scope iovec*, int);
60 }
version(Darwin)61 else version (Darwin)
62 {
63 struct iovec
64 {
65 void* iov_base;
66 size_t iov_len;
67 }
68
69 ssize_t readv(int, const scope iovec*, int);
70 ssize_t writev(int, const scope iovec*, int);
71 }
version(FreeBSD)72 else version (FreeBSD)
73 {
74 struct iovec
75 {
76 void* iov_base;
77 size_t iov_len;
78 }
79
80 ssize_t readv(int, const scope iovec*, int);
81 ssize_t writev(int, const scope iovec*, int);
82 }
version(NetBSD)83 else version (NetBSD)
84 {
85 struct iovec
86 {
87 void* iov_base;
88 size_t iov_len;
89 }
90
91 ssize_t readv(int, const scope iovec*, int);
92 ssize_t writev(int, const scope iovec*, int);
93 }
version(OpenBSD)94 else version (OpenBSD)
95 {
96 struct iovec
97 {
98 void* iov_base;
99 size_t iov_len;
100 }
101
102 ssize_t readv(int, const scope iovec*, int);
103 ssize_t writev(int, const scope iovec*, int);
104 }
version(DragonFlyBSD)105 else version (DragonFlyBSD)
106 {
107 struct iovec
108 {
109 void* iov_base;
110 size_t iov_len;
111 }
112
113 ssize_t readv(int, const scope iovec*, int);
114 ssize_t writev(int, const scope iovec*, int);
115 }
version(Solaris)116 else version (Solaris)
117 {
118 struct iovec
119 {
120 void* iov_base;
121 size_t iov_len;
122 }
123
124 ssize_t readv(int, const scope iovec*, int);
125 ssize_t writev(int, const scope iovec*, int);
126 }
version(CRuntime_Bionic)127 else version (CRuntime_Bionic)
128 {
129 struct iovec
130 {
131 void* iov_base;
132 size_t iov_len;
133 }
134
135 int readv(int, const scope iovec*, int);
136 int writev(int, const scope iovec*, int);
137 }
version(CRuntime_Musl)138 else version (CRuntime_Musl)
139 {
140 struct iovec
141 {
142 void* iov_base;
143 size_t iov_len;
144 }
145
146 ssize_t readv(int, const scope iovec*, int);
147 ssize_t writev(int, const scope iovec*, int);
148 }
version(CRuntime_UClibc)149 else version (CRuntime_UClibc)
150 {
151 struct iovec
152 {
153 void* iov_base;
154 size_t iov_len;
155 }
156
157 ssize_t readv(int, const scope iovec*, int);
158 ssize_t writev(int, const scope iovec*, int);
159 }
160 else
161 {
162 static assert(false, "Unsupported platform");
163 }
164