mman.pxd 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. # http://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/mman.h.html
  2. from posix.types cimport off_t, mode_t
  3. cdef extern from "<sys/mman.h>" nogil:
  4. enum: PROT_EXEC # protection bits for mmap/mprotect
  5. enum: PROT_READ
  6. enum: PROT_WRITE
  7. enum: PROT_NONE
  8. enum: MAP_PRIVATE # flag bits for mmap
  9. enum: MAP_SHARED
  10. enum: MAP_FIXED
  11. enum: MAP_ANON # These three are not in POSIX, but are
  12. enum: MAP_ANONYMOUS # fairly common in spelling/semantics
  13. enum: MAP_STACK
  14. enum: MAP_LOCKED # Typically available only on Linux
  15. enum: MAP_HUGETLB
  16. enum: MAP_POPULATE
  17. enum: MAP_NORESERVE
  18. enum: MAP_GROWSDOWN
  19. enum: MAP_NOCORE # Typically available only on BSD
  20. enum: MAP_NOSYNC
  21. void *mmap(void *addr, size_t Len, int prot, int flags, int fd, off_t off)
  22. int munmap(void *addr, size_t Len)
  23. int mprotect(void *addr, size_t Len, int prot)
  24. enum: MS_ASYNC
  25. enum: MS_SYNC
  26. enum: MS_INVALIDATE
  27. int msync(void *addr, size_t Len, int flags)
  28. enum: POSIX_MADV_NORMAL # POSIX advice flags
  29. enum: POSIX_MADV_SEQUENTIAL
  30. enum: POSIX_MADV_RANDOM
  31. enum: POSIX_MADV_WILLNEED
  32. enum: POSIX_MADV_DONTNEED
  33. int posix_madvise(void *addr, size_t Len, int advice)
  34. enum: MCL_CURRENT
  35. enum: MCL_FUTURE
  36. int mlock(const void *addr, size_t Len)
  37. int munlock(const void *addr, size_t Len)
  38. int mlockall(int flags)
  39. int munlockall()
  40. int shm_open(const char *name, int oflag, mode_t mode)
  41. int shm_unlink(const char *name)
  42. # often available
  43. enum: MADV_REMOVE # pre-POSIX advice flags; often available
  44. enum: MADV_DONTFORK
  45. enum: MADV_DOFORK
  46. enum: MADV_HWPOISON
  47. enum: MADV_MERGEABLE,
  48. enum: MADV_UNMERGEABLE
  49. int madvise(void *addr, size_t Len, int advice)
  50. # sometimes available
  51. int mincore(void *addr, size_t Len, unsigned char *vec)
  52. # These two are Linux specific but sometimes very efficient
  53. void *mremap(void *old_addr, size_t old_len, size_t new_len, int flags, ...)
  54. int remap_file_pages(void *addr, size_t Len, int prot,
  55. size_t pgoff, int flags)
  56. # The rare but standardized typed memory option
  57. enum: POSIX_TYPED_MEM_ALLOCATE
  58. enum: POSIX_TYPED_MEM_ALLOCATE_CONTIG
  59. enum: POSIX_TYPED_MEM_MAP_ALLOCATABLE
  60. int posix_typed_mem_open(const char *name, int oflag, int tflag)
  61. int posix_mem_offset(const void *addr, size_t Len, off_t *off,
  62. size_t *contig_len, int *fildes)
  63. cdef struct posix_typed_mem_info:
  64. size_t posix_tmi_length
  65. int posix_typed_mem_get_info(int fildes, posix_typed_mem_info *info)