2 * D header file for GNU/Linux
4 * Authors: Martin Nowak
6 module core
.sys
.linux
.sys
.mman
;
13 version (ARM
) version = ARM_Any
;
14 version (AArch64
) version = ARM_Any
;
15 version (HPPA
) version = HPPA_Any
;
16 version (HPPA64
) version = HPPA_Any
;
17 version (MIPS32
) version = MIPS_Any
;
18 version (MIPS64
) version = MIPS_Any
;
19 version (PPC
) version = PPC_Any
;
20 version (PPC64
) version = PPC_Any
;
21 version (RISCV32
) version = RISCV_Any
;
22 version (RISCV64
) version = RISCV_Any
;
23 version (S390
) version = IBMZ_Any
;
24 version (SPARC
) version = SPARC_Any
;
25 version (SPARC64
) version = SPARC_Any
;
26 version (SystemZ
) version = IBMZ_Any
;
27 version (X86
) version = X86_Any
;
28 version (X86_64
) version = X86_Any
;
30 public import core
.sys
.posix
.sys
.mman
;
31 import core
.sys
.linux
.config
;
34 // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/powerpc/bits/mman.h
39 static if (_DEFAULT_SOURCE
) enum
41 MAP_GROWSDOWN
= 0x00100,
42 MAP_DENYWRITE
= 0x00800,
43 MAP_EXECUTABLE
= 0x01000,
45 MAP_NORESERVE
= 0x00040,
46 MAP_POPULATE
= 0x08000,
47 MAP_NONBLOCK
= 0x10000,
49 MAP_HUGETLB
= 0x40000,
52 // in core.sys.posix.sys.mman
55 // MCL_CURRENT = 0x2000,
56 // MCL_FUTURE = 0x4000,
59 // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/riscv/bits/mman.h
60 else version (RISCV_Any
)
62 static if (_DEFAULT_SOURCE
) enum
64 MAP_GROWSDOWN
= 0x00100,
65 MAP_DENYWRITE
= 0x00800,
66 MAP_EXECUTABLE
= 0x01000,
68 MAP_NORESERVE
= 0x04000,
69 MAP_POPULATE
= 0x08000,
70 MAP_NONBLOCK
= 0x10000,
72 MAP_HUGETLB
= 0x40000,
74 MAP_FIXED_NOREPLACE
= 0x100000,
77 // in core.sys.posix.sys.mman
80 // MCL_CURRENT = 0x2000,
81 // MCL_FUTURE = 0x4000,
84 // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/s390/bits/mman.h
85 else version (IBMZ_Any
)
87 static if (_DEFAULT_SOURCE
) enum
89 MAP_GROWSDOWN
= 0x00100,
90 MAP_DENYWRITE
= 0x00800,
91 MAP_EXECUTABLE
= 0x01000,
93 MAP_NORESERVE
= 0x04000,
94 MAP_POPULATE
= 0x08000,
95 MAP_NONBLOCK
= 0x10000,
97 MAP_HUGETLB
= 0x40000,
100 // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/sh/bits/mman.h
103 static if (_DEFAULT_SOURCE
) enum
105 MAP_GROWSDOWN
= 0x0100,
106 MAP_DENYWRITE
= 0x0800,
107 MAP_EXECUTABLE
= 0x1000,
109 MAP_NORESERVE
= 0x4000,
110 MAP_POPULATE
= 0x8000,
111 MAP_NONBLOCK
= 0x10000,
113 MAP_HUGETLB
= 0x40000,
116 // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/sparc/bits/mman.h
117 else version (SPARC_Any
)
119 static if (_DEFAULT_SOURCE
) enum
121 MAP_GROWSDOWN
= 0x0200,
122 MAP_DENYWRITE
= 0x0800,
123 MAP_EXECUTABLE
= 0x1000,
125 MAP_NORESERVE
= 0x0040,
126 _MAP_NEW
= 0x80000000,
127 MAP_POPULATE
= 0x8000,
128 MAP_NONBLOCK
= 0x10000,
130 MAP_HUGETLB
= 0x40000,
133 // in core.sys.posix.sys.mman
136 // MCL_CURRENT = 0x2000,
137 // MCL_FUTURE = 0x4000,
140 // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/x86/bits/mman.h
141 else version (X86_Any
)
143 static if (_DEFAULT_SOURCE
) enum MAP_32BIT
= 0x40;
145 static if (_DEFAULT_SOURCE
) enum
147 MAP_GROWSDOWN
= 0x00100,
148 MAP_DENYWRITE
= 0x00800,
149 MAP_EXECUTABLE
= 0x01000,
150 MAP_LOCKED
= 0x02000,
151 MAP_NORESERVE
= 0x04000,
152 MAP_POPULATE
= 0x08000,
153 MAP_NONBLOCK
= 0x10000,
155 MAP_HUGETLB
= 0x40000,
158 // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/aarch64/bits/mman.h
159 else version (AArch64
)
161 static if (_DEFAULT_SOURCE
) enum
163 MAP_GROWSDOWN
= 0x00100,
164 MAP_DENYWRITE
= 0x00800,
165 MAP_EXECUTABLE
= 0x01000,
166 MAP_LOCKED
= 0x02000,
167 MAP_NORESERVE
= 0x04000,
168 MAP_POPULATE
= 0x08000,
169 MAP_NONBLOCK
= 0x10000,
171 MAP_HUGETLB
= 0x40000,
174 // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/alpha/bits/mman.h
183 PROT_GROWSDOWN
= 0x01000000,
184 PROT_GROWSUP
= 0x02000000,
187 enum MAP_SHARED
= 0x01;
188 enum MAP_PRIVATE
= 0x02;
189 static if (_DEFAULT_SOURCE
)
190 enum MAP_TYPE
= 0x0f;
192 enum MAP_FIXED
= 0x10;
193 static if (_DEFAULT_SOURCE
) enum
196 MAP_ANONYMOUS
= MAP_ANON
,
197 // in core.sys.posix.sys.mman
198 // MAP_ANON = MAP_ANONYMOUS,
200 MAP_HUGE_MASK
= 0x3f,
203 static if (_DEFAULT_SOURCE
) enum
205 MAP_GROWSDOWN
= 0x01000,
206 MAP_DENYWRITE
= 0x02000,
207 MAP_EXECUTABLE
= 0x04000,
208 MAP_LOCKED
= 0x08000,
209 MAP_NORESERVE
= 0x10000,
210 MAP_POPULATE
= 0x20000,
211 MAP_NONBLOCK
= 0x40000,
213 MAP_HUGETLB
= 0x100000,
216 // in core.sys.posix.sys.mman
221 // MS_INVALIDATE = 4,
224 // in core.sys.posix.sys.mman
227 // MCL_CURRENT = 8192,
228 // MCL_FUTURE = 16384,
231 static if (_GNU_SOURCE
) enum
237 static if (_DEFAULT_SOURCE
) enum
248 MADV_UNMERGEABLE
= 13,
250 MADV_NOHUGEPAGE
= 15,
256 // in core.sys.posix.sys.mman
257 // static if (_XOPEN_SOURCE >= 600) enum
259 // POSIX_MADV_NORMAL = 0,
260 // POSIX_MADV_RANDOM = 1,
261 // POSIX_MADV_SEQUENTIAL = 2,
262 // POSIX_MADV_WILLNEED = 3,
263 // POSIX_MADV_DONTNEED = 6,
266 // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/arm/bits/mman.h
269 static if (_DEFAULT_SOURCE
) enum
271 MAP_GROWSDOWN
= 0x00100,
272 MAP_DENYWRITE
= 0x00800,
273 MAP_EXECUTABLE
= 0x01000,
274 MAP_LOCKED
= 0x02000,
275 MAP_NORESERVE
= 0x04000,
276 MAP_POPULATE
= 0x08000,
277 MAP_NONBLOCK
= 0x10000,
279 MAP_HUGETLB
= 0x40000,
282 // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/hppa/bits/mman.h
283 else version (HPPA_Any
)
291 PROT_GROWSDOWN
= 0x01000000,
292 PROT_GROWSUP
= 0x02000000,
295 enum MAP_SHARED
= 0x01;
296 enum MAP_PRIVATE
= 0x02;
297 static if (_DEFAULT_SOURCE
)
298 enum MAP_TYPE
= 0x0f;
300 enum MAP_FIXED
= 0x04;
301 static if (_DEFAULT_SOURCE
) enum
304 MAP_ANONYMOUS
= MAP_ANON
,
305 // in core.sys.posix.sys.mman
306 // MAP_ANON = MAP_ANONYMOUS,
309 MAP_HUGE_MASK
= 0x3f,
312 static if (_DEFAULT_SOURCE
) enum
314 MAP_DENYWRITE
= 0x0800,
315 MAP_EXECUTABLE
= 0x1000,
317 MAP_NORESERVE
= 0x4000,
318 MAP_GROWSDOWN
= 0x8000,
319 MAP_POPULATE
= 0x10000,
320 MAP_NONBLOCK
= 0x20000,
323 // in core.sys.posix.sys.mman
328 // MS_INVALIDATE = 4,
331 // in core.sys.posix.sys.mman
338 static if (_GNU_SOURCE
) enum
344 static if (_DEFAULT_SOURCE
) enum
353 MADV_VPS_INHERIT
= 7,
358 MADV_UNMERGEABLE
= 66,
360 MADV_NOHUGEPAGE
= 68,
364 deprecated("MADV_*_PAGES are gone and never had any effect") enum
369 MADV_256K_PAGES
= 18,
376 // in core.sys.posix.sys.mman
377 // static if (_XOPEN_SOURCE >= 600) enum
379 // POSIX_MADV_NORMAL = 0,
380 // POSIX_MADV_RANDOM = 1,
381 // POSIX_MADV_SEQUENTIAL = 2,
382 // POSIX_MADV_WILLNEED = 3,
383 // POSIX_MADV_DONTNEED = 4,
386 // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/ia64/bits/mman.h
389 static if (_DEFAULT_SOURCE
) enum
391 MAP_GROWSDOWN
= 0x00100,
392 MAP_GROWSUP
= 0x00200,
393 MAP_DENYWRITE
= 0x00800,
394 MAP_EXECUTABLE
= 0x01000,
395 MAP_LOCKED
= 0x02000,
396 MAP_NORESERVE
= 0x04000,
397 MAP_POPULATE
= 0x08000,
398 MAP_NONBLOCK
= 0x10000,
400 MAP_HUGETLB
= 0x40000,
403 // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/m68k/bits/mman.h
406 static if (_DEFAULT_SOURCE
) enum
408 MAP_GROWSDOWN
= 0x00100,
409 MAP_DENYWRITE
= 0x00800,
410 MAP_EXECUTABLE
= 0x01000,
411 MAP_LOCKED
= 0x02000,
412 MAP_NORESERVE
= 0x04000,
413 MAP_POPULATE
= 0x08000,
414 MAP_NONBLOCK
= 0x10000,
416 MAP_HUGETLB
= 0x40000,
419 // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/mips/bits/mman.h
420 else version (MIPS_Any
)
422 static if (_DEFAULT_SOURCE
) enum
424 MAP_NORESERVE
= 0x0400,
425 MAP_GROWSDOWN
= 0x1000,
426 MAP_DENYWRITE
= 0x2000,
427 MAP_EXECUTABLE
= 0x4000,
429 MAP_POPULATE
= 0x10000,
430 MAP_NONBLOCK
= 0x20000,
432 MAP_HUGETLB
= 0x80000,
435 else version (LoongArch64
)
437 static if (_DEFAULT_SOURCE
) enum
439 MAP_GROWSDOWN
= 0x00100,
440 MAP_DENYWRITE
= 0x00800,
441 MAP_EXECUTABLE
= 0x01000,
442 MAP_LOCKED
= 0x02000,
443 MAP_NORESERVE
= 0x04000,
444 MAP_POPULATE
= 0x08000,
445 MAP_NONBLOCK
= 0x10000,
447 MAP_HUGETLB
= 0x40000,
449 MAP_FIXED_NOREPLACE
= 0x100000,
452 // in core.sys.posix.sys.mman
455 // MCL_CURRENT = 0x1,
461 static assert(0, "unimplemented");
465 // <bits/mman-linux.h>
466 // https://sourceware.org/git/?p=glibc.git;a=blob;f=bits/mman-linux.h
470 else version (HPPA_Any
)
475 // in core.sys.posix.sys.mman
476 // enum PROT_READ = 0x1;
477 // enum PROT_WRITE = 0x2;
478 // enum PROT_EXEC = 0x4;
479 // enum PROT_NONE = 0x0;
481 enum PROT_GROWSDOWN
= 0x01000000;
482 enum PROT_GROWSUP
= 0x02000000;
484 enum MAP_SHARED
= 0x01;
485 enum MAP_PRIVATE
= 0x02;
486 static if (_DEFAULT_SOURCE
)
487 enum MAP_TYPE
= 0x0f;
489 enum MAP_FIXED
= 0x10;
490 static if (_DEFAULT_SOURCE
) enum
493 MAP_ANONYMOUS
= MAP_ANON
,
494 // in core.sys.posix.sys.mman
497 MAP_HUGE_MASK
= 0x3f,
500 // in core.sys.posix.sys.mman
505 // MS_INVALIDATE = 2,
508 static if (_GNU_SOURCE
) enum
514 static if (_DEFAULT_SOURCE
) enum
525 MADV_UNMERGEABLE
= 13,
527 MADV_NOHUGEPAGE
= 15,
533 // in core.sys.posix.sys.mman
534 // static if (_XOPEN_SOURCE >= 600) enum
536 // POSIX_MADV_NORMAL = 0,
537 // POSIX_MADV_RANDOM = 1,
538 // POSIX_MADV_SEQUENTIAL = 2,
539 // POSIX_MADV_WILLNEED = 3,
540 // POSIX_MADV_DONTNEED = 4,
543 // in core.sys.posix.sys.mman
552 // Workaround https://issues.dlang.org/show_bug.cgi?id=17883
553 // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/sparc/bits/mman.h
556 static if (_DEFAULT_SOURCE
) enum MAP_RENAME
= MAP_ANONYMOUS
;
558 // http://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/mips/bits/mman.h
559 else version (MIPS_Any
)
561 static if (_DEFAULT_SOURCE
) enum MAP_RENAME
= MAP_ANONYMOUS
;
564 // http://sourceware.org/git/?p=glibc.git;a=blob;f=misc/sys/mman.h
565 // in core.sys.posix.sys.mman
566 // static if (__USE_LARGEFILE64) void* mmap64(void*, size_t, int, int, int, off_t);
567 // static if (__USE_FILE_OFFSET64)
568 // alias mmap64 mmap;
570 // void* mmap(void*, size_t, int, int, int, off_t);
571 // int munmap(void*, size_t);
572 // int mprotect(void *__addr, size_t __len, int __prot);
573 // int msync(void *__addr, size_t __len, int __flags);
574 static if (_DEFAULT_SOURCE
) int madvise(void *__addr
, size_t __len
, int __advice
);
575 // static if (_XOPEN_SOURCE >= 600) int posix_madvise(void *__addr, size_t __len, int __advice);
576 // int mlock(const(void) *__addr, size_t __len);
577 // int munlock(const(void) *__addr, size_t __len);
578 // int mlockall(int __flags);
580 static if (_DEFAULT_SOURCE
) int mincore(void *__start
, size_t __len
, ubyte *__vec
);
581 static if (_GNU_SOURCE
) void *mremap(void *__addr
, size_t __old_len
, size_t __new_len
, int __flags
, ...);
582 static if (_GNU_SOURCE
) int remap_file_pages(void *__start
, size_t __size
, int __prot
, size_t __pgoff
, int __flags
);
583 // int shm_open(in char *__name, int __oflag, mode_t __mode);
584 // int shm_unlink(in char *__name);