liberasurecode 1.6.3
Erasure Code API library
Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Functions | Variables
libphazr.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include "erasurecode.h"
#include "erasurecode_backend.h"
#include "erasurecode_helpers.h"

Go to the source code of this file.

Data Structures

struct  libphazr_descriptor
 

Macros

#define LIBPHAZR_LIB_MAJOR   1
 
#define LIBPHAZR_LIB_MINOR   0
 
#define LIBPHAZR_LIB_REV   0
 
#define LIBPHAZR_LIB_VER_STR   "1.0.0"
 
#define LIBPHAZR_LIB_NAME   "libphazr"
 
#define LIBPHAZR_SO_NAME   "libphazr" LIBERASURECODE_SO_SUFFIX ".so.1"
 
#define DEFAULT_W   64
 
#define DEFAULT_HD   1
 

Typedefs

typedef int(* pio_matrix_encode_func) (char *, char *, char **, int, int, int, int, int, int)
 
typedef int(* pio_matrix_decode_func) (char *, char *, char **, int *, int, int, int, int, int, int)
 
typedef int(* pio_matrix_reconstruct_func) (char *, char **, int *, int, int, int, int, int, int)
 
typedef char *(* pio_create_precoding_matrix_func) (int)
 
typedef char *(* pio_create_inverse_precoding_matrix_func) (int)
 
typedef char *(* pio_create_kmux_matrix_func) (int, int, int)
 

Functions

static int get_padded_blocksize (int w, int hd, int blocksize)
 
static int pio_matrix_encode (void *desc, char **data, char **parity, int blocksize)
 
static int pio_matrix_decode (void *desc, char **data, char **parity, int *missing_idxs, int blocksize)
 
static int pio_matrix_reconstruct (void *desc, char **data, char **parity, int *missing_idxs, int destination_idx, int blocksize)
 
static int pio_min_fragments (void *desc, int *missing_idxs, int *fragments_to_exclude, int *fragments_needed)
 
static int pio_element_size (void *desc)
 Return the element-size, which is the number of bits stored on a given device, per codeword.
 
static void * pio_init (struct ec_backend_args *args, void *backend_sohandle)
 
static int pio_exit (void *desc)
 
static bool pio_is_compatible_with (uint32_t version)
 
static size_t pio_get_backend_metadata_size (void *desc, int blocksize)
 
static size_t pio_get_encode_offset (void *desc, int metadata_size)
 

Variables

struct ec_backend libphazr
 
struct ec_backend_op_stubs libphazr_ops
 
struct ec_backend_common backend_libphazr
 
struct ec_backend_op_stubs libphazr_op_stubs
 

Macro Definition Documentation

◆ DEFAULT_HD

#define DEFAULT_HD   1

Definition at line 86 of file libphazr.c.

◆ DEFAULT_W

#define DEFAULT_W   64

Definition at line 84 of file libphazr.c.

◆ LIBPHAZR_LIB_MAJOR

#define LIBPHAZR_LIB_MAJOR   1

Definition at line 36 of file libphazr.c.

◆ LIBPHAZR_LIB_MINOR

#define LIBPHAZR_LIB_MINOR   0

Definition at line 37 of file libphazr.c.

◆ LIBPHAZR_LIB_NAME

#define LIBPHAZR_LIB_NAME   "libphazr"

Definition at line 40 of file libphazr.c.

◆ LIBPHAZR_LIB_REV

#define LIBPHAZR_LIB_REV   0

Definition at line 38 of file libphazr.c.

◆ LIBPHAZR_LIB_VER_STR

#define LIBPHAZR_LIB_VER_STR   "1.0.0"

Definition at line 39 of file libphazr.c.

◆ LIBPHAZR_SO_NAME

#define LIBPHAZR_SO_NAME   "libphazr" LIBERASURECODE_SO_SUFFIX ".so.1"

Definition at line 44 of file libphazr.c.

Typedef Documentation

◆ pio_create_inverse_precoding_matrix_func

typedef char *(* pio_create_inverse_precoding_matrix_func) (int)

Definition at line 56 of file libphazr.c.

◆ pio_create_kmux_matrix_func

typedef char *(* pio_create_kmux_matrix_func) (int, int, int)

Definition at line 57 of file libphazr.c.

◆ pio_create_precoding_matrix_func

typedef char *(* pio_create_precoding_matrix_func) (int)

Definition at line 55 of file libphazr.c.

◆ pio_matrix_decode_func

typedef int(* pio_matrix_decode_func) (char *, char *, char **, int *, int, int, int, int, int, int)

Definition at line 53 of file libphazr.c.

◆ pio_matrix_encode_func

typedef int(* pio_matrix_encode_func) (char *, char *, char **, int, int, int, int, int, int)

Definition at line 52 of file libphazr.c.

◆ pio_matrix_reconstruct_func

typedef int(* pio_matrix_reconstruct_func) (char *, char **, int *, int, int, int, int, int, int)

Definition at line 54 of file libphazr.c.

Function Documentation

◆ get_padded_blocksize()

static int get_padded_blocksize ( int  w,
int  hd,
int  blocksize 
)
static

◆ pio_element_size()

static int pio_element_size ( void *  desc)
static

Return the element-size, which is the number of bits stored on a given device, per codeword.

Definition at line 212 of file libphazr.c.

References libphazr_descriptor::w.

◆ pio_exit()

static int pio_exit ( void *  desc)
static

◆ pio_get_backend_metadata_size()

static size_t pio_get_backend_metadata_size ( void *  desc,
int  blocksize 
)
static

◆ pio_get_encode_offset()

static size_t pio_get_encode_offset ( void *  desc,
int  metadata_size 
)
static

Definition at line 363 of file libphazr.c.

◆ pio_init()

static void * pio_init ( struct ec_backend_args *  args,
void *  backend_sohandle 
)
static

◆ pio_is_compatible_with()

static bool pio_is_compatible_with ( uint32_t  version)
static

Definition at line 351 of file libphazr.c.

References backend_libphazr.

◆ pio_matrix_decode()

static int pio_matrix_decode ( void *  desc,
char **  data,
char **  parity,
int *  missing_idxs,
int  blocksize 
)
static

◆ pio_matrix_encode()

static int pio_matrix_encode ( void *  desc,
char **  data,
char **  parity,
int  blocksize 
)
static

◆ pio_matrix_reconstruct()

static int pio_matrix_reconstruct ( void *  desc,
char **  data,
char **  parity,
int *  missing_idxs,
int  destination_idx,
int  blocksize 
)
static

◆ pio_min_fragments()

static int pio_min_fragments ( void *  desc,
int *  missing_idxs,
int *  fragments_to_exclude,
int *  fragments_needed 
)
static

Definition at line 183 of file libphazr.c.

References libphazr_descriptor::k, and libphazr_descriptor::m.

Variable Documentation

◆ backend_libphazr

struct ec_backend_common backend_libphazr
Initial value:
= {
.id = EC_BACKEND_LIBPHAZR,
.soname = LIBPHAZR_SO_NAME,
.soversion = LIBPHAZR_LIB_VER_STR,
.ec_backend_version = _VERSION(LIBPHAZR_LIB_MAJOR, LIBPHAZR_LIB_MINOR,
}
#define LIBPHAZR_LIB_VER_STR
Definition libphazr.c:39
#define LIBPHAZR_SO_NAME
Definition libphazr.c:44
#define LIBPHAZR_LIB_REV
Definition libphazr.c:38
#define LIBPHAZR_LIB_NAME
Definition libphazr.c:40
#define LIBPHAZR_LIB_MINOR
Definition libphazr.c:37
#define LIBPHAZR_LIB_MAJOR
Definition libphazr.c:36
struct ec_backend_op_stubs libphazr_op_stubs
Definition libphazr.c:369

Definition at line 50 of file libphazr.c.

Referenced by pio_is_compatible_with().

◆ libphazr

struct ec_backend libphazr

Definition at line 48 of file libphazr.c.

◆ libphazr_op_stubs

struct ec_backend_op_stubs libphazr_op_stubs
Initial value:
= {
.INIT = pio_init,
.EXIT = pio_exit,
.ENCODE = pio_matrix_encode,
.DECODE = pio_matrix_decode,
.FRAGSNEEDED = pio_min_fragments,
.RECONSTRUCT = pio_matrix_reconstruct,
.ELEMENTSIZE = pio_element_size,
.ISCOMPATIBLEWITH = pio_is_compatible_with,
.GETMETADATASIZE = pio_get_backend_metadata_size,
.GETENCODEOFFSET = pio_get_encode_offset,
}
static void * pio_init(struct ec_backend_args *args, void *backend_sohandle)
Definition libphazr.c:219
static int pio_matrix_decode(void *desc, char **data, char **parity, int *missing_idxs, int blocksize)
Definition libphazr.c:123
static int pio_matrix_reconstruct(void *desc, char **data, char **parity, int *missing_idxs, int destination_idx, int blocksize)
Definition libphazr.c:153
static int pio_element_size(void *desc)
Return the element-size, which is the number of bits stored on a given device, per codeword.
Definition libphazr.c:212
static int pio_matrix_encode(void *desc, char **data, char **parity, int blocksize)
Definition libphazr.c:94
static int pio_min_fragments(void *desc, int *missing_idxs, int *fragments_to_exclude, int *fragments_needed)
Definition libphazr.c:183
static bool pio_is_compatible_with(uint32_t version)
Definition libphazr.c:351
static size_t pio_get_backend_metadata_size(void *desc, int blocksize)
Definition libphazr.c:356
static size_t pio_get_encode_offset(void *desc, int metadata_size)
Definition libphazr.c:363
static int pio_exit(void *desc)
Definition libphazr.c:336

Definition at line 369 of file libphazr.c.

◆ libphazr_ops

struct ec_backend_op_stubs libphazr_ops

Definition at line 49 of file libphazr.c.