liberasurecode
1.6.2
Erasure Code API library
|
Go to the documentation of this file.
30 #include "erasurecode.h"
31 #include "erasurecode_backend.h"
32 #include "erasurecode_helpers.h"
33 #include "erasurecode_helpers_ext.h"
35 #define LIBERASURECODE_RS_VAND_LIB_MAJOR 1
36 #define LIBERASURECODE_RS_VAND_LIB_MINOR 0
37 #define LIBERASURECODE_RS_VAND_LIB_REV 0
38 #define LIBERASURECODE_RS_VAND_LIB_VER_STR "1.0"
39 #define LIBERASURECODE_RS_VAND_LIB_NAME "liberasurecode_rs_vand"
40 #if defined(__MACOS__) || defined(__MACOSX__) || defined(__OSX__) || defined(__APPLE__)
41 #define LIBERASURECODE_RS_VAND_SO_NAME "liberasurecode_rs_vand.dylib"
43 #define LIBERASURECODE_RS_VAND_SO_NAME "liberasurecode_rs_vand.so.1"
57 typedef int* (*make_systematic_matrix_func)(int, int);
91 rs_vand_desc->
k, rs_vand_desc->
m, blocksize);
96 int *missing_idxs,
int blocksize)
103 rs_vand_desc->
k, rs_vand_desc->
m, missing_idxs, blocksize, 1);
109 int *missing_idxs,
int destination_idx,
int blocksize)
116 rs_vand_desc->
k, rs_vand_desc->
m, missing_idxs, destination_idx, blocksize);
122 int *fragments_to_exclude,
int *fragments_needed)
127 uint64_t exclude_bm = convert_list_to_bitmap(fragments_to_exclude);
128 uint64_t missing_bm = convert_list_to_bitmap(missing_idxs) | exclude_bm;
133 for (i = 0; i < (rs_vand_desc->
k + rs_vand_desc->
m); i++) {
134 if (!(missing_bm & (1 << i))) {
135 fragments_needed[j] = i;
138 if (j == rs_vand_desc->
k) {
140 fragments_needed[j] = -1;
149 void *backend_sohandle)
159 desc->
k = args->uargs.k;
160 desc->
m = args->uargs.m;
163 args->uargs.w = desc->
w = 16;
167 if ((desc->
k + desc->
m) > 65536) {
185 } func_handle = {.vptr = NULL};
189 func_handle.vptr = NULL;
190 func_handle.vptr = dlsym(backend_sohandle,
"init_liberasurecode_rs_vand");
196 func_handle.vptr = NULL;
197 func_handle.vptr = dlsym(backend_sohandle,
"deinit_liberasurecode_rs_vand");
203 func_handle.vptr = NULL;
204 func_handle.vptr = dlsym(backend_sohandle,
"make_systematic_matrix");
210 func_handle.vptr = NULL;
211 func_handle.vptr = dlsym(backend_sohandle,
"free_systematic_matrix");
217 func_handle.vptr = NULL;
218 func_handle.vptr = dlsym(backend_sohandle,
"liberasurecode_rs_vand_encode");
224 func_handle.vptr = NULL;
225 func_handle.vptr = dlsym(backend_sohandle,
"liberasurecode_rs_vand_decode");
231 func_handle.vptr = NULL;
232 func_handle.vptr = dlsym(backend_sohandle,
"liberasurecode_rs_vand_reconstruct");
242 if (NULL == desc->
matrix) {
268 return rs_vand_desc->
w;
301 .GETMETADATASIZE = get_backend_metadata_size_zero,
302 .GETENCODEOFFSET = get_encode_offset_zero,
306 .id = EC_BACKEND_LIBERASURECODE_RS_VAND,
static int liberasurecode_rs_vand_min_fragments(void *desc, int *missing_idxs, int *fragments_to_exclude, int *fragments_needed)
static int liberasurecode_rs_vand_encode(void *desc, char **data, char **parity, int blocksize)
void(* free_systematic_matrix_func)(int *)
#define LIBERASURECODE_RS_VAND_LIB_MAJOR
#define LIBERASURECODE_RS_VAND_LIB_MINOR
#define LIBERASURECODE_RS_VAND_LIB_VER_STR
#define LIBERASURECODE_RS_VAND_LIB_NAME
int(* liberasurecode_rs_vand_encode_func)(int *, char **, char **, int, int, int)
int(* liberasurecode_rs_vand_reconstruct_func)(int *, char **, char **, int, int, int *, int, int)
struct ec_backend_op_stubs liberasurecode_rs_vand_ops
int *(* make_systematic_matrix_func)(int, int)
make_systematic_matrix_func make_systematic_matrix
static int liberasurecode_rs_vand_reconstruct(void *desc, char **data, char **parity, int *missing_idxs, int destination_idx, int blocksize)
static bool liberasurecode_rs_vand_is_compatible_with(uint32_t version)
struct ec_backend_op_stubs liberasurecode_rs_vand_op_stubs
deinit_liberasurecode_rs_vand_func deinit_liberasurecode_rs_vand
init_liberasurecode_rs_vand_func init_liberasurecode_rs_vand
void(* init_liberasurecode_rs_vand_func)(int, int)
#define LIBERASURECODE_RS_VAND_SO_NAME
static int liberasurecode_rs_vand_element_size(void *desc)
Return the element-size, which is the number of bits stored on a given device, per codeword.
static void * liberasurecode_rs_vand_init(struct ec_backend_args *args, void *backend_sohandle)
int(* liberasurecode_rs_vand_decode_func)(int *, char **, char **, int, int, int *, int, int)
static int liberasurecode_rs_vand_exit(void *desc)
void(* deinit_liberasurecode_rs_vand_func)()
static int liberasurecode_rs_vand_decode(void *desc, char **data, char **parity, int *missing_idxs, int blocksize)
struct ec_backend_common backend_liberasurecode_rs_vand
free_systematic_matrix_func free_systematic_matrix
struct ec_backend liberasurecode_rs_vand
liberasurecode_rs_vand_reconstruct_func liberasurecode_rs_vand_reconstruct
liberasurecode_rs_vand_decode_func liberasurecode_rs_vand_decode
liberasurecode_rs_vand_encode_func liberasurecode_rs_vand_encode
#define LIBERASURECODE_RS_VAND_LIB_REV