Mercurial > projects > ldc
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 */ |