xref: /netbsd-src/external/gpl3/gcc/dist/libphobos/libdruntime/core/sys/posix/sys/uio.d (revision 0a3071956a3a9fdebdbf7f338cf2d439b45fc728)
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