cython

Форк
0
101 строка · 3.4 Кб
1
# https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_mman.h.html
2
# https://man7.org/linux/man-pages/man2/mmap.2.html
3
# https://www.freebsd.org/cgi/man.cgi?query=mmap&sektion=2
4

5
from posix.types cimport off_t, mode_t
6

7
cdef extern from "<sys/mman.h>" nogil:
8
    enum: PROT_EXEC                 # protection bits for mmap/mprotect
9
    enum: PROT_READ
10
    enum: PROT_WRITE
11
    enum: PROT_NONE
12

13
    enum: MAP_PRIVATE               # flag bits for mmap
14
    enum: MAP_SHARED
15
    enum: MAP_FIXED
16
    enum: MAP_ANON                  # These three are not in POSIX, but are
17
    enum: MAP_ANONYMOUS             # fairly common in spelling/semantics
18
    enum: MAP_STACK
19

20
    enum: MAP_LOCKED                # Typically available only on Linux
21
    enum: MAP_HUGETLB
22
    enum: MAP_POPULATE
23
    enum: MAP_NORESERVE
24
    enum: MAP_GROWSDOWN
25

26
    enum: MAP_NOCORE                #  Typically available only on BSD
27
    enum: MAP_NOSYNC
28

29
    void *MAP_FAILED
30

31
    void *mmap(void *addr, size_t Len, int prot, int flags, int fd, off_t off)
32
    int   munmap(void *addr, size_t Len)
33
    int   mprotect(void *addr, size_t Len, int prot)
34

35
    enum: MS_ASYNC
36
    enum: MS_SYNC
37
    enum: MS_INVALIDATE
38
    int   msync(void *addr, size_t Len, int flags)
39

40
    enum: POSIX_MADV_NORMAL         # POSIX advice flags
41
    enum: POSIX_MADV_SEQUENTIAL
42
    enum: POSIX_MADV_RANDOM
43
    enum: POSIX_MADV_WILLNEED
44
    enum: POSIX_MADV_DONTNEED
45
    int   posix_madvise(void *addr, size_t Len, int advice)
46

47
    enum: MCL_CURRENT
48
    enum: MCL_FUTURE
49
    int   mlock(const void *addr, size_t Len)
50
    int   munlock(const void *addr, size_t Len)
51
    int   mlockall(int flags)
52
    int   munlockall()
53
    # Linux-specific
54
    enum: MLOCK_ONFAULT
55
    enum: MCL_ONFAULT
56
    int   mlock2(const void *addr, size_t len, int flags)
57

58
    int shm_open(const char *name, int oflag, mode_t mode)
59
    int shm_unlink(const char *name)
60

61
    # often available
62
    enum: MADV_NORMAL               # pre-POSIX advice flags; should translate 1-1 to POSIX_*
63
    enum: MADV_RANDOM               # but in practice it is not always the same.
64
    enum: MADV_SEQUENTIAL
65
    enum: MADV_WILLNEED
66
    enum: MADV_DONTNEED
67
    enum: MADV_REMOVE               # other pre-POSIX advice flags; often available
68
    enum: MADV_DONTFORK
69
    enum: MADV_DOFORK
70
    enum: MADV_HWPOISON
71
    enum: MADV_MERGEABLE,
72
    enum: MADV_UNMERGEABLE
73
    enum: MADV_SOFT_OFFLINE
74
    enum: MADV_HUGEPAGE
75
    enum: MADV_NOHUGEPAGE
76
    enum: MADV_DONTDUMP
77
    enum: MADV_DODUMP
78
    enum: MADV_FREE
79
    enum: MADV_WIPEONFORK
80
    enum: MADV_KEEPONFORK
81
    int   madvise(void *addr, size_t Len, int advice)
82

83
    # sometimes available
84
    int   mincore(void *addr, size_t Len, unsigned char *vec)
85

86
    # These two are Linux specific but sometimes very efficient
87
    void *mremap(void *old_addr, size_t old_len, size_t new_len, int flags, ...)
88
    int   remap_file_pages(void *addr, size_t Len, int prot,
89
                           size_t pgoff, int flags)
90

91
    # The rare but standardized typed memory option
92
    enum: POSIX_TYPED_MEM_ALLOCATE
93
    enum: POSIX_TYPED_MEM_ALLOCATE_CONTIG
94
    enum: POSIX_TYPED_MEM_MAP_ALLOCATABLE
95
    int posix_typed_mem_open(const char *name, int oflag, int tflag)
96
    int posix_mem_offset(const void *addr, size_t Len, off_t *off,
97
                         size_t *contig_len, int *fildes)
98

99
    cdef struct posix_typed_mem_info:
100
        size_t posix_tmi_length
101
    int posix_typed_mem_get_info(int fildes, posix_typed_mem_info *info)
102

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.