This source file includes following definitions.
- _segment_ds_reset
1
2
3
4
5
6
7
8
9
10
11
12 #ifndef PMIX_PSHMEM_H
13 #define PMIX_PSHMEM_H
14
15 #include <src/include/pmix_config.h>
16
17 #include <pmix_common.h>
18 #include "src/mca/mca.h"
19 #include "src/mca/base/pmix_mca_base_var.h"
20 #include "src/mca/base/pmix_mca_base_framework.h"
21
22
23 BEGIN_C_DECLS
24
25 #if !defined(MAP_FAILED)
26 # define MAP_FAILED ((char*)-1)
27 #endif
28
29 #define PMIX_SHMEM_DS_ID_INVALID -1
30
31 typedef enum {
32 PMIX_PSHMEM_RONLY,
33 PMIX_PSHMEM_RW
34 } pmix_pshmem_access_mode_t;
35
36 typedef struct pmix_pshmem_seg_t {
37
38 pid_t seg_cpid;
39
40 int seg_id;
41
42 size_t seg_size;
43
44 unsigned char *seg_base_addr;
45 char seg_name[PMIX_PATH_MAX];
46 } pmix_pshmem_seg_t;
47
48
49 static inline void _segment_ds_reset(pmix_pshmem_seg_t *sm_seg)
50 {
51 sm_seg->seg_cpid = 0;
52 sm_seg->seg_id = PMIX_SHMEM_DS_ID_INVALID;
53 sm_seg->seg_size = 0;
54 memset(sm_seg->seg_name, '\0', PMIX_PATH_MAX);
55 sm_seg->seg_base_addr = (unsigned char *)MAP_FAILED;
56 }
57
58
59 typedef pmix_status_t (*pmix_pshmem_base_module_init_fn_t)(void);
60
61
62 typedef void (*pmix_pshmem_base_module_finalize_fn_t)(void);
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 typedef int (*pmix_pshmem_base_module_segment_create_fn_t)(pmix_pshmem_seg_t *sm_seg,
78 const char *file_name, size_t size);
79
80
81
82
83
84
85
86
87
88
89 typedef int (*pmix_pshmem_base_module_segment_attach_fn_t)(pmix_pshmem_seg_t *sm_seg,
90 pmix_pshmem_access_mode_t sm_mode);
91
92
93
94
95
96
97
98
99
100 typedef int (*pmix_pshmem_base_module_segment_detach_fn_t)(pmix_pshmem_seg_t *sm_seg);
101
102
103
104
105
106
107
108
109
110 typedef int (*pmix_pshmem_base_module_unlink_fn_t)(pmix_pshmem_seg_t *sm_seg);
111
112
113
114
115
116 typedef struct {
117 const char *name;
118 pmix_pshmem_base_module_init_fn_t init;
119 pmix_pshmem_base_module_finalize_fn_t finalize;
120 pmix_pshmem_base_module_segment_create_fn_t segment_create;
121 pmix_pshmem_base_module_segment_attach_fn_t segment_attach;
122 pmix_pshmem_base_module_segment_detach_fn_t segment_detach;
123 pmix_pshmem_base_module_unlink_fn_t segment_unlink;
124 } pmix_pshmem_base_module_t;
125
126
127 struct pmix_pshmem_base_component_t {
128 pmix_mca_base_component_t base;
129 pmix_mca_base_component_data_t data;
130 int priority;
131 };
132
133 typedef struct pmix_pshmem_base_component_t pmix_pshmem_base_component_t;
134
135 PMIX_EXPORT extern pmix_pshmem_base_module_t pmix_pshmem;
136
137
138
139
140 #define PMIX_PSHMEM_BASE_VERSION_1_0_0 \
141 PMIX_MCA_BASE_VERSION_1_0_0("pshmem", 1, 0, 0)
142
143 END_C_DECLS
144
145 #endif