File: sshmem.h

package info (click to toggle)
openmpi 5.0.8-3
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 201,692 kB
  • sloc: ansic: 613,078; makefile: 42,353; sh: 11,194; javascript: 9,244; f90: 7,052; java: 6,404; perl: 5,179; python: 1,859; lex: 740; fortran: 61; cpp: 20; tcl: 12
file content (167 lines) | stat: -rw-r--r-- 4,973 bytes parent folder | download | duplicates (7)
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
/*
 * Copyright (c) 2014      Mellanox Technologies, Inc.
 *                         All rights reserved.
 * Copyright (c) 2015      Los Alamos National Security, LLC. All rights
 *                         reserved.
 * $COPYRIGHT$
 *
 * Additional copyrights may follow
 *
 * $HEADER$
 */

/**
 * @file
 *
 * sshmem (shared memory backing facility) framework component interface
 * definitions.
 *
 * The module has the following functions:
 *
 * - module_init
 * - segment_create
 * - segment_attach
 * - segment_detach
 * - unlink
 * - module_finalize
 */

#ifndef MCA_SSHMEM_H
#define MCA_SSHMEM_H

#include "oshmem_config.h"
#include "oshmem/types.h"
#include "oshmem/constants.h"

#include "oshmem/mca/mca.h"
#include "opal/mca/base/base.h"

#include "oshmem/mca/sshmem/sshmem_types.h"

BEGIN_C_DECLS

/* ////////////////////////////////////////////////////////////////////////// */
typedef int
(*mca_sshmem_base_component_runtime_query_fn_t)(mca_base_module_t **module,
                                                int *priority,
                                                const char *hint);

/* structure for sshmem components. */
struct mca_sshmem_base_component_2_0_0_t {
    /* base MCA component */
    mca_base_component_t base_version;
    /* base MCA data */
    mca_base_component_data_t base_data;
    /* component runtime query */
    mca_sshmem_base_component_runtime_query_fn_t runtime_query;
};

/* convenience typedefs */
typedef struct mca_sshmem_base_component_2_0_0_t
mca_sshmem_base_component_2_0_0_t;

typedef struct mca_sshmem_base_component_2_0_0_t mca_sshmem_base_component_t;

/* ////////////////////////////////////////////////////////////////////////// */
/* shmem API function pointers */

/**
 * module initialization function.
 * @return OSHMEM_SUCCESS on success.
 */
typedef int
(*mca_sshmem_base_module_init_fn_t)(void);

/**
 * create a new shared memory segment and initialize members in structure
 * pointed to by ds_buf.
 *
 * @param ds_buf               pointer to map_segment_t typedef'd structure
 *                             defined in shmem_types.h (OUT).
 *
 * @param file_name file_name  unique string identifier that must be a valid,
 *                             writable path (IN).
 *
 * @param address              address to attach the segment at, or 0 allocate
 *                             any available address in the process.
 *
 * @param size                 size of the shared memory segment.
 *
 * @param hint                 hint of the shared memory segment.
 *
 * @return OSHMEM_SUCCESS on success.
 */
typedef int
(*mca_sshmem_base_module_segment_create_fn_t)(map_segment_t *ds_buf,
                                              const char *file_name,
                                              size_t size, long hint);

/**
 * attach to an existing shared memory segment initialized by segment_create.
 *
 * @param ds_buf  pointer to initialized map_segment_t typedef'd
 *                structure (IN/OUT).
 *
 * @return        base address of shared memory segment on success. returns
 *                NULL otherwise.
 */
typedef void *
(*mca_sshmem_base_module_segment_attach_fn_t)(map_segment_t *ds_buf, sshmem_mkey_t *mkey);

/**
 * detach from an existing shared memory segment.
 *
 * @param ds_buf  pointer to initialized map_segment_t typedef'd structure
 *                (IN/OUT).
 *
 * @return OSHMEM_SUCCESS on success.
 */
typedef int
(*mca_sshmem_base_module_segment_detach_fn_t)(map_segment_t *ds_buf, sshmem_mkey_t *mkey);

/**
 * unlink an existing shared memory segment.
 *
 * @param ds_buf  pointer to initialized map_segment_t typedef'd structure
 *                (IN/OUT).
 *
 * @return OSHMEM_SUCCESS on success.
 */
typedef int
(*mca_sshmem_base_module_unlink_fn_t)(map_segment_t *ds_buf);

/**
 * module finalize function.  invoked by the base on the selected
 * module when the sshmem framework is being shut down.
 */
typedef int (*mca_sshmem_base_module_finalize_fn_t)(void);

/**
 * structure for shmem modules
 */
struct mca_sshmem_base_module_2_0_0_t {
    mca_sshmem_base_module_init_fn_t            module_init;
    mca_sshmem_base_module_segment_create_fn_t  segment_create;
    mca_sshmem_base_module_segment_attach_fn_t  segment_attach;
    mca_sshmem_base_module_segment_detach_fn_t  segment_detach;
    mca_sshmem_base_module_unlink_fn_t          unlink;
    mca_sshmem_base_module_finalize_fn_t        module_finalize;
};

/**
 * convenience typedefs
 */
typedef struct mca_sshmem_base_module_2_0_0_t mca_sshmem_base_module_2_0_0_t;
typedef struct mca_sshmem_base_module_2_0_0_t mca_sshmem_base_module_t;

/**
 * macro for use in components that are of type sshmem
 * see: oshmem/mca/mca.h for more information
 */
#define MCA_SSHMEM_BASE_VERSION_2_0_0                                          \
    OSHMEM_MCA_BASE_VERSION_2_1_0("sshmem", 2, 0, 0)

END_C_DECLS

#endif /* MCA_SSHMEM_H */