mman.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /* Definitions for BSD-style memory management.
  2. Copyright (C) 1994-1998,2000,01 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. /* Protections are chosen from these bits, OR'd together. The
  23. implementation does not necessarily support PROT_EXEC or PROT_WRITE
  24. without PROT_READ. The only guarantees are that no writing will be
  25. allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */
  26. #define PROT_NONE 0x00 /* No access. */
  27. #define PROT_READ 0x01 /* Pages can be read. */
  28. #define PROT_WRITE 0x02 /* Pages can be written. */
  29. #define PROT_EXEC 0x04 /* Pages can be executed. */
  30. /* Sharing types (must choose one and only one of these). */
  31. #define MAP_SHARED 0x01 /* Share changes. */
  32. #define MAP_PRIVATE 0x02 /* Changes are private. */
  33. #ifdef __USE_MISC
  34. # define MAP_TYPE 0x0f /* Mask for type of mapping. */
  35. #endif
  36. /* Other flags. */
  37. #define MAP_FIXED 0x10 /* Interpret addr exactly. */
  38. #ifdef __USE_MISC
  39. # define MAP_FILE 0
  40. # define MAP_ANONYMOUS 0x20 /* Don't use a file. */
  41. # define MAP_ANON MAP_ANONYMOUS
  42. #endif
  43. /* These are Linux-specific. */
  44. #ifdef __USE_MISC
  45. # define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
  46. # define MAP_DENYWRITE 0x0800 /* ETXTBSY */
  47. # define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
  48. # define MAP_LOCKED 0x2000 /* Lock the mapping. */
  49. # define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
  50. #endif
  51. /* Flags to `msync'. */
  52. #define MS_ASYNC 1 /* Sync memory asynchronously. */
  53. #define MS_SYNC 4 /* Synchronous memory sync. */
  54. #define MS_INVALIDATE 2 /* Invalidate the caches. */
  55. /* Flags for `mlockall'. */
  56. #define MCL_CURRENT 1 /* Lock all currently mapped pages. */
  57. #define MCL_FUTURE 2 /* Lock all additions to address
  58. space. */
  59. /* Flags for `mremap'. */
  60. #ifdef __USE_GNU
  61. # define MREMAP_MAYMOVE 1
  62. #endif