comparison druntime/import/core/sys/posix/sys/mman.d @ 1458:e0b2d67cfe7c

Added druntime (this should be removed once it works).
author Robert Clipsham <robert@octarineparrot.com>
date Tue, 02 Jun 2009 17:43:06 +0100
parents
children
comparison
equal deleted inserted replaced
1456:7b218ec1044f 1458:e0b2d67cfe7c
1 /**
2 * D header file for POSIX.
3 *
4 * Copyright: Copyright Sean Kelly 2005 - 2009.
5 * License: <a href="http://www.boost.org/LICENSE_1_0.txt>Boost License 1.0</a>.
6 * Authors: Sean Kelly
7 * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
8 *
9 * Copyright Sean Kelly 2005 - 2009.
10 * Distributed under the Boost Software License, Version 1.0.
11 * (See accompanying file LICENSE_1_0.txt or copy at
12 * http://www.boost.org/LICENSE_1_0.txt)
13 */
14 module core.sys.posix.sys.mman;
15
16 private import core.sys.posix.config;
17 public import core.stdc.stddef; // for size_t
18 public import core.sys.posix.sys.types; // for off_t, mode_t
19
20 extern (C):
21
22 //
23 // Advisory Information (ADV)
24 //
25 /*
26 int posix_madvise(void*, size_t, int);
27 */
28
29 //
30 // Advisory Information and either Memory Mapped Files or Shared Memory Objects (MC1)
31 //
32 /*
33 POSIX_MADV_NORMAL
34 POSIX_MADV_SEQUENTIAL
35 POSIX_MADV_RANDOM
36 POSIX_MADV_WILLNEED
37 POSIX_MADV_DONTNEED
38 */
39
40 version( linux )
41 {
42 enum POSIX_MADV_NORMAL = 0;
43 enum POSIX_MADV_RANDOM = 1;
44 enum POSIX_MADV_SEQUENTIAL = 2;
45 enum POSIX_MADV_WILLNEED = 3;
46 enum POSIX_MADV_DONTNEED = 4;
47 }
48 else version( OSX )
49 {
50 enum POSIX_MADV_NORMAL = 0;
51 enum POSIX_MADV_RANDOM = 1;
52 enum POSIX_MADV_SEQUENTIAL = 2;
53 enum POSIX_MADV_WILLNEED = 3;
54 enum POSIX_MADV_DONTNEED = 4;
55 }
56 else version( freebsd )
57 {
58 enum POSIX_MADV_NORMAL = 0;
59 enum POSIX_MADV_RANDOM = 1;
60 enum POSIX_MADV_SEQUENTIAL = 2;
61 enum POSIX_MADV_WILLNEED = 3;
62 enum POSIX_MADV_DONTNEED = 4;
63 }
64
65 //
66 // Memory Mapped Files, Shared Memory Objects, or Memory Protection (MC2)
67 //
68 /*
69 PROT_READ
70 PROT_WRITE
71 PROT_EXEC
72 PROT_NONE
73 */
74
75 version( linux )
76 {
77 enum PROT_NONE = 0x0;
78 enum PROT_READ = 0x1;
79 enum PROT_WRITE = 0x2;
80 enum PROT_EXEC = 0x4;
81 }
82 else version( OSX )
83 {
84 enum PROT_NONE = 0x00;
85 enum PROT_READ = 0x01;
86 enum PROT_WRITE = 0x02;
87 enum PROT_EXEC = 0x04;
88 }
89 else version( freebsd )
90 {
91 enum PROT_NONE = 0x00;
92 enum PROT_READ = 0x01;
93 enum PROT_WRITE = 0x02;
94 enum PROT_EXEC = 0x04;
95 }
96
97 //
98 // Memory Mapped Files, Shared Memory Objects, or Typed Memory Objects (MC3)
99 //
100 /*
101 void* mmap(void*, size_t, int, int, int, off_t);
102 int munmap(void*, size_t);
103 */
104
105 version( linux )
106 {
107 //void* mmap(void*, size_t, int, int, int, off_t);
108 int munmap(void*, size_t);
109
110 static if( __USE_LARGEFILE64 )
111 {
112 void* mmap64(void*, size_t, int, int, int, off_t);
113 alias mmap64 mmap;
114 }
115 else
116 {
117 void* mmap(void*, size_t, int, int, int, off_t);
118 }
119 }
120 else version( OSX )
121 {
122 void* mmap(void*, size_t, int, int, int, off_t);
123 int munmap(void*, size_t);
124 }
125 else version( freebsd )
126 {
127 void* mmap(void*, size_t, int, int, int, off_t);
128 int munmap(void*, size_t);
129 }
130
131 //
132 // Memory Mapped Files (MF)
133 //
134 /*
135 MAP_SHARED (MF|SHM)
136 MAP_PRIVATE (MF|SHM)
137 MAP_FIXED (MF|SHM)
138 MAP_FAILED (MF|SHM)
139
140 MS_ASYNC (MF|SIO)
141 MS_SYNC (MF|SIO)
142 MS_INVALIDATE (MF|SIO)
143
144 int msync(void*, size_t, int); (MF|SIO)
145 */
146
147 version( linux )
148 {
149 enum MAP_SHARED = 0x01;
150 enum MAP_PRIVATE = 0x02;
151 enum MAP_FIXED = 0x10;
152 enum MAP_ANON = 0x20; // non-standard
153
154 enum MAP_FAILED = cast(void*) -1;
155
156 enum
157 {
158 MS_ASYNC = 1,
159 MS_SYNC = 4,
160 MS_INVALIDATE = 2
161 }
162
163 int msync(void*, size_t, int);
164 }
165 else version( OSX )
166 {
167 enum MAP_SHARED = 0x0001;
168 enum MAP_PRIVATE = 0x0002;
169 enum MAP_FIXED = 0x0010;
170 enum MAP_ANON = 0x1000; // non-standard
171
172 enum MAP_FAILED = cast(void*)-1;
173
174 enum MS_ASYNC = 0x0001;
175 enum MS_INVALIDATE = 0x0002;
176 enum MS_SYNC = 0x0010;
177
178 int msync(void*, size_t, int);
179 }
180 else version( freebsd )
181 {
182 enum MAP_SHARED = 0x0001;
183 enum MAP_PRIVATE = 0x0002;
184 enum MAP_FIXED = 0x0010;
185 enum MAP_ANON = 0x1000; // non-standard
186
187 enum MAP_FAILED = cast(void*)-1;
188
189 enum MS_SYNC = 0x0000;
190 enum MS_ASYNC = 0x0001;
191 enum MS_INVALIDATE = 0x0002;
192
193 int msync(void*, size_t, int);
194 }
195
196 //
197 // Process Memory Locking (ML)
198 //
199 /*
200 MCL_CURRENT
201 MCL_FUTURE
202
203 int mlockall(int);
204 int munlockall();
205 */
206
207 version( linux )
208 {
209 enum MCL_CURRENT = 1;
210 enum MCL_FUTURE = 2;
211
212 int mlockall(int);
213 int munlockall();
214
215 }
216 else version( OSX )
217 {
218 enum MCL_CURRENT = 0x0001;
219 enum MCL_FUTURE = 0x0002;
220
221 int mlockall(int);
222 int munlockall();
223 }
224 else version( freebsd )
225 {
226 enum MCL_CURRENT = 0x0001;
227 enum MCL_FUTURE = 0x0002;
228
229 int mlockall(int);
230 int munlockall();
231 }
232
233 //
234 // Range Memory Locking (MLR)
235 //
236 /*
237 int mlock(in void*, size_t);
238 int munlock(in void*, size_t);
239 */
240
241 version( linux )
242 {
243 int mlock(in void*, size_t);
244 int munlock(in void*, size_t);
245 }
246 else version( OSX )
247 {
248 int mlock(in void*, size_t);
249 int munlock(in void*, size_t);
250 }
251 else version( freebsd )
252 {
253 int mlock(in void*, size_t);
254 int munlock(in void*, size_t);
255 }
256
257 //
258 // Memory Protection (MPR)
259 //
260 /*
261 int mprotect(void*, size_t, int);
262 */
263
264 version( OSX )
265 {
266 int mprotect(void*, size_t, int);
267 }
268 else version( freebsd )
269 {
270 int mprotect(void*, size_t, int);
271 }
272
273 //
274 // Shared Memory Objects (SHM)
275 //
276 /*
277 int shm_open(in char*, int, mode_t);
278 int shm_unlink(in char*);
279 */
280
281 version( linux )
282 {
283 int shm_open(in char*, int, mode_t);
284 int shm_unlink(in char*);
285 }
286 else version( OSX )
287 {
288 int shm_open(in char*, int, mode_t);
289 int shm_unlink(in char*);
290 }
291 else version( freebsd )
292 {
293 int shm_open(in char*, int, mode_t);
294 int shm_unlink(in char*);
295 }
296
297 //
298 // Typed Memory Objects (TYM)
299 //
300 /*
301 POSIX_TYPED_MEM_ALLOCATE
302 POSIX_TYPED_MEM_ALLOCATE_CONTIG
303 POSIX_TYPED_MEM_MAP_ALLOCATABLE
304
305 struct posix_typed_mem_info
306 {
307 size_t posix_tmi_length;
308 }
309
310 int posix_mem_offset(in void*, size_t, off_t *, size_t *, int *);
311 int posix_typed_mem_get_info(int, struct posix_typed_mem_info *);
312 int posix_typed_mem_open(in char*, int, int);
313 */