mman.h 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /* Definitions for POSIX memory map interface. Linux/v850 version.
  2. Copyright (C) 1997, 1999, 2001, 2002 Free Software Foundation, Inc.
  3. This file is part of the GNU C Library.
  4. The GNU C Library is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU Lesser General Public
  6. License as published by the Free Software Foundation; either
  7. version 2.1 of the License, or (at your option) any later version.
  8. The GNU C Library is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  11. Lesser General Public License for more details.
  12. You should have received a copy of the GNU Lesser General Public
  13. License along with the GNU C Library; if not, write to the Free
  14. Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  15. 02111-1307 USA. */
  16. /* These are the bits used by 4.4 BSD and its derivatives. On systems
  17. (such as GNU) where these facilities are not system services but can be
  18. emulated in the C library, these are the definitions we emulate. */
  19. #ifndef _SYS_MMAN_H
  20. # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
  21. #endif
  22. /* The following definitions basically come from the kernel headers.
  23. But the kernel header is not namespace clean. */
  24. /* Protections are chosen from these bits, OR'd together. The
  25. implementation does not necessarily support PROT_EXEC or PROT_WRITE
  26. without PROT_READ. The only guarantees are that no writing will be
  27. allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */
  28. #define PROT_READ 0x1 /* Page can be read. */
  29. #define PROT_WRITE 0x2 /* Page can be written. */
  30. #define PROT_EXEC 0x4 /* Page can be executed. */
  31. #define PROT_NONE 0x0 /* Page can not be accessed. */
  32. /* Sharing types (must choose one and only one of these). */
  33. #define MAP_SHARED 0x01 /* Share changes. */
  34. #define MAP_PRIVATE 0x02 /* Changes are private. */
  35. #ifdef __USE_MISC
  36. # define MAP_TYPE 0x0f /* Mask for type of mapping. */
  37. #endif
  38. /* Other flags. */
  39. #define MAP_FIXED 0x10 /* Interpret addr exactly. */
  40. #ifdef __USE_MISC
  41. # define MAP_FILE 0
  42. # define MAP_ANONYMOUS 0x20 /* Don't use a file. */
  43. # define MAP_ANON MAP_ANONYMOUS
  44. #endif
  45. /* These are Linux-specific. */
  46. #ifdef __USE_MISC
  47. # define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
  48. # define MAP_DENYWRITE 0x0800 /* ETXTBSY */
  49. # define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
  50. # define MAP_LOCKED 0x2000 /* Lock the mapping. */
  51. # define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
  52. #endif
  53. /* Flags to `msync'. */
  54. #define MS_ASYNC 1 /* Sync memory asynchronously. */
  55. #define MS_SYNC 4 /* Synchronous memory sync. */
  56. #define MS_INVALIDATE 2 /* Invalidate the caches. */
  57. /* Advice to `madvise'. */
  58. #ifdef __USE_BSD
  59. # define MADV_NORMAL 0 /* No further special treatment. */
  60. # define MADV_RANDOM 1 /* Expect random page references. */
  61. # define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
  62. # define MADV_WILLNEED 3 /* Will need these pages. */
  63. # define MADV_DONTNEED 4 /* Don't need these pages. */
  64. #endif
  65. /* The POSIX people had to invent similar names for the same things. */
  66. #ifdef __USE_XOPEN2K
  67. # define POSIX_MADV_NORMAL 0 /* No further special treatment. */
  68. # define POSIX_MADV_RANDOM 1 /* Expect random page references. */
  69. # define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */
  70. # define POSIX_MADV_WILLNEED 3 /* Will need these pages. */
  71. # define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */
  72. #endif
  73. /* Flags for `mlockall' (can be OR'd together). */
  74. #define MCL_CURRENT 1 /* Lock all currently mapped pages. */
  75. #define MCL_FUTURE 2 /* Lock all additions to address
  76. space. */
  77. /* Flags for `mremap'. */
  78. #ifdef __USE_GNU
  79. # define MREMAP_MAYMOVE 1
  80. #endif