liberasurecode  1.6.1
Erasure Code API library
Functions
erasurecode_helpers.c File Reference
#include <assert.h>
#include <stdio.h>
#include <stdarg.h>
#include <zlib.h>
#include "erasurecode_backend.h"
#include "erasurecode_helpers.h"
#include "erasurecode_helpers_ext.h"
#include "erasurecode_stdinc.h"
#include "erasurecode_version.h"
#include "alg_sig.h"
#include "erasurecode_log.h"

Go to the source code of this file.

Functions

static bool is_fragment (char *buf)
 
void * get_aligned_buffer16 (int size)
 Memory Management Methods. More...
 
void * alloc_zeroed_buffer (int size)
 Allocate a zero-ed buffer of a specific size. More...
 
void * alloc_and_set_buffer (int size, int value)
 Allocate a buffer of a specific size and set its' contents to the specified value. More...
 
void * check_and_free_buffer (void *buf)
 Deallocate memory buffer if it's not NULL. More...
 
char * alloc_fragment_buffer (int size)
 
int free_fragment_buffer (char *buf)
 
uint64_t get_fragment_size (char *buf)
 Return total fragment length (on-disk, on-wire) More...
 
int get_aligned_data_size (ec_backend_t instance, int data_len)
 Compute a size aligned to the number of data and the underlying wordsize of the EC algorithm. More...
 
char * get_data_ptr_from_fragment (char *buf)
 
int get_data_ptr_array_from_fragments (char **data_array, char **fragments, int num_fragments)
 
int get_fragment_ptr_array_from_data (char **frag_array, char **data, int num_data)
 
char * get_fragment_ptr_from_data_novalidate (char *buf)
 
char * get_fragment_ptr_from_data (char *buf)
 
int set_fragment_idx (char *buf, int idx)
 
int get_fragment_idx (char *buf)
 
int set_fragment_payload_size (char *buf, int size)
 
int get_fragment_payload_size (char *buf)
 
int set_fragment_backend_metadata_size (char *buf, int size)
 
int get_fragment_backend_metadata_size (char *buf)
 
int get_fragment_buffer_size (char *buf)
 
int set_orig_data_size (char *buf, int orig_data_size)
 
int get_orig_data_size (char *buf)
 
int set_libec_version (char *buf)
 
int get_libec_version (char *buf, uint32_t *ver)
 
int set_backend_id (char *buf, ec_backend_id_t id)
 
int get_backend_id (char *buf, ec_backend_id_t *id)
 
int set_backend_version (char *buf, uint32_t version)
 
int get_backend_version (char *buf, uint32_t *version)
 
int set_checksum (ec_checksum_type_t ct, char *buf, int blocksize)
 

Function Documentation

◆ alloc_and_set_buffer()

void* alloc_and_set_buffer ( int  size,
int  value 
)

Allocate a buffer of a specific size and set its' contents to the specified value.

Parameters
sizeinteger size in bytes of buffer to allocate
value
Returns
pointer to start of allocated buffer or NULL on error

Definition at line 97 of file erasurecode_helpers.c.

Referenced by alloc_zeroed_buffer(), liberasurecode_decode(), and liberasurecode_reconstruct_fragment().

◆ alloc_fragment_buffer()

char* alloc_fragment_buffer ( int  size)

◆ alloc_zeroed_buffer()

void* alloc_zeroed_buffer ( int  size)

Allocate a zero-ed buffer of a specific size.

Parameters
sizeinteger size in bytes of buffer to allocate
Returns
pointer to start of allocated buffer or NULL on error

Definition at line 84 of file erasurecode_helpers.c.

References alloc_and_set_buffer().

Referenced by jerasure_rs_cauchy_reconstruct(), jerasure_rs_vand_reconstruct(), liberasurecode_decode(), liberasurecode_encode(), and liberasurecode_reconstruct_fragment().

◆ check_and_free_buffer()

void* check_and_free_buffer ( void *  buf)

Deallocate memory buffer if it's not NULL.

This methods returns NULL so that you can free and reset a buffer using a single line as follows:

my_ptr = check_and_free_buffer(my_ptr);

Returns
NULL

Definition at line 116 of file erasurecode_helpers.c.

Referenced by prepare_fragments_for_encode().

◆ free_fragment_buffer()

int free_fragment_buffer ( char *  buf)

Definition at line 139 of file erasurecode_helpers.c.

Referenced by prepare_fragments_for_encode().

◆ get_aligned_buffer16()

void* get_aligned_buffer16 ( int  size)

Memory Management Methods.

The following methods provide wrappers for allocating and deallocating memory.

Ensure all memory is aligned to 16-byte boundaries to support 128-bit operations

Definition at line 61 of file erasurecode_helpers.c.

Referenced by alloc_fragment_buffer(), and fragments_to_string().

◆ get_aligned_data_size()

int get_aligned_data_size ( ec_backend_t  instance,
int  data_len 
)

Compute a size aligned to the number of data and the underlying wordsize of the EC algorithm.

Parameters
instance- ec_backend_t instance (to extract args)
data_len- integer length of data in bytes
Returns
integer data length aligned with wordsize of EC algorithm

Definition at line 185 of file erasurecode_helpers.c.

Referenced by liberasurecode_get_fragment_size(), and prepare_fragments_for_encode().

◆ get_backend_id()

int get_backend_id ( char *  buf,
ec_backend_id_t *  id 
)

Definition at line 430 of file erasurecode_helpers.c.

References is_fragment().

◆ get_backend_version()

int get_backend_version ( char *  buf,
uint32_t *  version 
)

Definition at line 450 of file erasurecode_helpers.c.

References is_fragment().

◆ get_data_ptr_array_from_fragments()

int get_data_ptr_array_from_fragments ( char **  data_array,
char **  fragments,
int  num_fragments 
)

◆ get_data_ptr_from_fragment()

char* get_data_ptr_from_fragment ( char *  buf)

◆ get_fragment_backend_metadata_size()

int get_fragment_backend_metadata_size ( char *  buf)

Definition at line 346 of file erasurecode_helpers.c.

◆ get_fragment_buffer_size()

int get_fragment_buffer_size ( char *  buf)

Definition at line 359 of file erasurecode_helpers.c.

Referenced by get_fragment_size().

◆ get_fragment_idx()

int get_fragment_idx ( char *  buf)

Definition at line 290 of file erasurecode_helpers.c.

Referenced by fragments_to_string(), and get_fragment_partition().

◆ get_fragment_payload_size()

int get_fragment_payload_size ( char *  buf)

Definition at line 318 of file erasurecode_helpers.c.

Referenced by fragments_to_string(), and prepare_fragments_for_decode().

◆ get_fragment_ptr_array_from_data()

int get_fragment_ptr_array_from_data ( char **  frag_array,
char **  data,
int  num_data 
)

Definition at line 234 of file erasurecode_helpers.c.

References get_fragment_ptr_from_data().

Referenced by liberasurecode_encode().

◆ get_fragment_ptr_from_data()

char* get_fragment_ptr_from_data ( char *  buf)

◆ get_fragment_ptr_from_data_novalidate()

char* get_fragment_ptr_from_data_novalidate ( char *  buf)

Definition at line 250 of file erasurecode_helpers.c.

◆ get_fragment_size()

uint64_t get_fragment_size ( char *  buf)

Return total fragment length (on-disk, on-wire)

Parameters
buf- pointer to fragment buffer
Returns
fragment size on disk

Definition at line 168 of file erasurecode_helpers.c.

References get_fragment_buffer_size().

Referenced by liberasurecode_encode().

◆ get_libec_version()

int get_libec_version ( char *  buf,
uint32_t *  ver 
)

Definition at line 410 of file erasurecode_helpers.c.

References is_fragment().

Referenced by is_invalid_fragment().

◆ get_orig_data_size()

int get_orig_data_size ( char *  buf)

Definition at line 387 of file erasurecode_helpers.c.

Referenced by fragments_to_string(), and prepare_fragments_for_decode().

◆ is_fragment()

static bool is_fragment ( char *  buf)
static

◆ set_backend_id()

int set_backend_id ( char *  buf,
ec_backend_id_t  id 
)

Definition at line 420 of file erasurecode_helpers.c.

References is_fragment().

Referenced by add_fragment_metadata().

◆ set_backend_version()

int set_backend_version ( char *  buf,
uint32_t  version 
)

Definition at line 440 of file erasurecode_helpers.c.

References is_fragment().

Referenced by add_fragment_metadata().

◆ set_checksum()

int set_checksum ( ec_checksum_type_t  ct,
char *  buf,
int  blocksize 
)
inline

Definition at line 462 of file erasurecode_helpers.c.

References get_data_ptr_from_fragment().

Referenced by add_fragment_metadata().

◆ set_fragment_backend_metadata_size()

int set_fragment_backend_metadata_size ( char *  buf,
int  size 
)

Definition at line 331 of file erasurecode_helpers.c.

Referenced by add_fragment_metadata().

◆ set_fragment_idx()

int set_fragment_idx ( char *  buf,
int  idx 
)

Definition at line 275 of file erasurecode_helpers.c.

Referenced by add_fragment_metadata().

◆ set_fragment_payload_size()

int set_fragment_payload_size ( char *  buf,
int  size 
)

Definition at line 303 of file erasurecode_helpers.c.

Referenced by add_fragment_metadata().

◆ set_libec_version()

int set_libec_version ( char *  buf)

Definition at line 400 of file erasurecode_helpers.c.

References is_fragment().

Referenced by add_fragment_metadata().

◆ set_orig_data_size()

int set_orig_data_size ( char *  buf,
int  orig_data_size 
)

Definition at line 372 of file erasurecode_helpers.c.

Referenced by add_fragment_metadata().