1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 #ifndef MCA_RCACHE_BASE_VMA_H
32 #define MCA_RCACHE_BASE_VMA_H
33
34 #include "opal_config.h"
35 #include "opal/class/opal_list.h"
36 #include "opal/class/opal_interval_tree.h"
37 #include "opal/class/opal_lifo.h"
38
39 BEGIN_C_DECLS
40
41 struct mca_rcache_base_registration_t;
42
43 struct mca_rcache_base_vma_module_t {
44 opal_object_t super;
45 opal_interval_tree_t tree;
46 opal_list_t vma_list;
47 opal_lifo_t vma_gc_lifo;
48 size_t reg_cur_cache_size;
49 opal_mutex_t vma_lock;
50 };
51 typedef struct mca_rcache_base_vma_module_t mca_rcache_base_vma_module_t;
52
53 OBJ_CLASS_DECLARATION(mca_rcache_base_vma_module_t);
54
55 mca_rcache_base_vma_module_t *mca_rcache_base_vma_module_alloc (void);
56
57 int mca_rcache_base_vma_find (mca_rcache_base_vma_module_t *vma_module, void *addr,
58 size_t size, struct mca_rcache_base_registration_t **reg);
59
60 int mca_rcache_base_vma_find_all (mca_rcache_base_vma_module_t *vma_module, void *addr,
61 size_t size, struct mca_rcache_base_registration_t **regs,
62 int reg_cnt);
63
64 int mca_rcache_base_vma_insert (mca_rcache_base_vma_module_t *vma_module,
65 struct mca_rcache_base_registration_t *registration,
66 size_t limit);
67
68 int mca_rcache_base_vma_delete (mca_rcache_base_vma_module_t *vma_module,
69 struct mca_rcache_base_registration_t *registration);
70
71 void mca_rcache_base_vma_dump_range (mca_rcache_base_vma_module_t *vma_module,
72 unsigned char *base, size_t size, char *msg);
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90 int mca_rcache_base_vma_iterate (mca_rcache_base_vma_module_t *vma_module,
91 unsigned char *base, size_t size, bool partial_ok,
92 int (*callback_fn) (struct mca_rcache_base_registration_t *, void *),
93 void *ctx);
94
95 size_t mca_rcache_base_vma_size (mca_rcache_base_vma_module_t *vma_module);
96
97 END_C_DECLS
98
99 #endif