Lightweight Parallel Foundations 1.0.1-alpha 2023-06-26T11:02:34Z
A high performance and model-compliant communication layer
bsmp.h
Go to the documentation of this file.
1
2/*
3 * Copyright 2021 Huawei Technologies Co., Ltd.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18#ifndef _H_LPF_BSMP
19#define _H_LPF_BSMP
20
21#include <lpf/core.h>
22
23#define _LPF_BMSP_VERSION 201500L
24
25#ifdef __cplusplus
26#define restrict __restrict__
27extern "C" {
28#endif
29
43
51
58 WRITE
59};
60
63
66
68 size_t tag_size;
69
71 size_t queued;
72
74 size_t * restrict remote_pos;
75
77 size_t * restrict local_pos;
78
80 size_t * restrict headers;
81
83 char * restrict message_queue;
84
87
90
93
96
99
102
105
108
111};
112
114#ifdef DOXYGEN
115typedef ... lpf_bsmp_t;
116#else
117typedef struct lpf_bsmp_buffer * lpf_bsmp_t;
118#endif
119
121extern _LPFLIB_API const lpf_bsmp_t LPF_INVALID_BSMP;
122
124extern _LPFLIB_API const lpf_err_t LPF_ERR_BSMP_FULL;
125
132extern _LPFLIB_API const lpf_err_t LPF_ERR_BSMP_INVAL;
133
135extern _LPFLIB_API const size_t LPF_INVALID_SIZE;
136
138extern _LPFLIB_API const lpf_memslot_t LPF_INVALID_MEMSLOT;
139
177extern _LPFLIB_API
179 const lpf_t ctx,
180 const lpf_pid_t s,
181 const lpf_pid_t p,
182 const size_t buffer_size,
183 const size_t tag_size,
184 const size_t max_messages,
185 lpf_bsmp_t * const bsmp
186);
187
211extern _LPFLIB_API
213
254extern _LPFLIB_API
256 const lpf_bsmp_t bsmp,
257 const lpf_pid_t pid,
258 const lpf_memslot_t tag,
259 const size_t tag_offset,
260 const lpf_memslot_t payload,
261 const size_t payload_offset,
262 const size_t payload_size
263);
264
304extern _LPFLIB_API
306
344extern _LPFLIB_API
345lpf_err_t lpf_bsmp_syncall( lpf_bsmp_t * const bsmp, const size_t num_objects, lpf_sync_attr_t hint );
346
366extern _LPFLIB_API
367lpf_err_t lpf_move( lpf_bsmp_t bsmp, void * * const tag_p, void * * const payload_p, size_t * const size );
368
375#ifdef __cplusplus
376} //end ``extern "C"''
377#undef restrict
378#endif
379
380#endif //end ``_H_LPF_BSMP''
381
const lpf_err_t LPF_ERR_BSMP_INVAL
lpf_err_t lpf_move(lpf_bsmp_t bsmp, void **const tag_p, void **const payload_p, size_t *const size)
lpf_err_t lpf_bsmp_syncall(lpf_bsmp_t *const bsmp, const size_t num_objects, lpf_sync_attr_t hint)
lpf_err_t lpf_bsmp_destroy(lpf_bsmp_t *const bsmp)
lpf_err_t lpf_send(const lpf_bsmp_t bsmp, const lpf_pid_t pid, const lpf_memslot_t tag, const size_t tag_offset, const lpf_memslot_t payload, const size_t payload_offset, const size_t payload_size)
const size_t LPF_INVALID_SIZE
lpf_err_t lpf_bsmp_create(const lpf_t ctx, const lpf_pid_t s, const lpf_pid_t p, const size_t buffer_size, const size_t tag_size, const size_t max_messages, lpf_bsmp_t *const bsmp)
lpf_err_t lpf_bsmp_sync(lpf_bsmp_t bsmp, lpf_sync_attr_t hint)
lpf_bsmp_mode
Definition: bsmp.h:42
typedef lpf_bsmp_t
Definition: bsmp.h:115
const lpf_memslot_t LPF_INVALID_MEMSLOT
const lpf_err_t LPF_ERR_BSMP_FULL
const lpf_bsmp_t LPF_INVALID_BSMP
@ WRITE
Definition: bsmp.h:58
@ READ
Definition: bsmp.h:50
typedef lpf_sync_attr_t
Definition: core.h:941
typedef lpf_memslot_t
Definition: core.h:1042
void * lpf_t
Definition: core.h:775
typedef lpf_pid_t
Definition: core.h:786
typedef lpf_err_t
Definition: core.h:871
Definition: bsmp.h:62
size_t *restrict remote_pos
Definition: bsmp.h:74
lpf_memslot_t out_slot
Definition: bsmp.h:89
enum lpf_bsmp_mode mode
Definition: bsmp.h:107
size_t tag_size
Definition: bsmp.h:68
lpf_t ctx
Definition: bsmp.h:110
char *restrict message_queue
Definition: bsmp.h:83
lpf_pid_t pid_pos
Definition: bsmp.h:104
lpf_memslot_t in_slot
Definition: bsmp.h:86
lpf_memslot_t lpos_slot
Definition: bsmp.h:95
lpf_memslot_t rpos_slot
Definition: bsmp.h:92
lpf_pid_t s
Definition: bsmp.h:98
size_t queued
Definition: bsmp.h:71
size_t buffer_size
Definition: bsmp.h:65
size_t *restrict local_pos
Definition: bsmp.h:77
size_t *restrict headers
Definition: bsmp.h:80
lpf_pid_t p
Definition: bsmp.h:101