liberasurecode 1.6.3
Erasure Code API library
Loading...
Searching...
No Matches
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.
void * alloc_zeroed_buffer (int size)
 Allocate a zero-ed buffer of a specific size.
void * alloc_and_set_buffer (int size, int value)
 Allocate a buffer of a specific size and set its' contents to the specified value.
void * check_and_free_buffer (void *buf)
 Deallocate memory buffer if it's not NULL.
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).
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.
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.

References alloc_and_set_buffer().

Referenced by alloc_and_set_buffer(), 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(), and alloc_zeroed_buffer().

Referenced by alloc_zeroed_buffer(), 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.

References check_and_free_buffer().

Referenced by check_and_free_buffer(), and prepare_fragments_for_encode().

◆ free_fragment_buffer()

int free_fragment_buffer ( char * buf)

Definition at line 139 of file erasurecode_helpers.c.

References free_fragment_buffer().

Referenced by free_fragment_buffer(), and 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.

References get_aligned_buffer16().

Referenced by alloc_fragment_buffer(), fragments_to_string(), and get_aligned_buffer16().

◆ 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.

References get_aligned_data_size().

Referenced by get_aligned_data_size(), 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 get_backend_id(), and is_fragment().

Referenced by get_backend_id().

◆ get_backend_version()

int get_backend_version ( char * buf,
uint32_t * version )

Definition at line 450 of file erasurecode_helpers.c.

References get_backend_version(), and is_fragment().

Referenced by get_backend_version().

◆ 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()

◆ get_fragment_backend_metadata_size()

int get_fragment_backend_metadata_size ( char * buf)

◆ get_fragment_buffer_size()

int get_fragment_buffer_size ( char * buf)

Definition at line 359 of file erasurecode_helpers.c.

References get_fragment_buffer_size().

Referenced by get_fragment_buffer_size(), and get_fragment_size().

◆ get_fragment_idx()

int get_fragment_idx ( char * buf)

◆ get_fragment_payload_size()

int get_fragment_payload_size ( char * buf)

◆ get_fragment_ptr_array_from_data()

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

◆ 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)

◆ 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(), and get_fragment_size().

Referenced by get_fragment_size(), and liberasurecode_encode().

◆ get_libec_version()

int get_libec_version ( char * buf,
uint32_t * ver )

Definition at line 410 of file erasurecode_helpers.c.

References get_libec_version(), and is_fragment().

Referenced by get_libec_version(), and is_invalid_fragment().

◆ get_orig_data_size()

int get_orig_data_size ( char * buf)

◆ is_fragment()

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(), and set_backend_id().

Referenced by add_fragment_metadata(), and set_backend_id().

◆ set_backend_version()

int set_backend_version ( char * buf,
uint32_t version )

Definition at line 440 of file erasurecode_helpers.c.

References is_fragment(), and set_backend_version().

Referenced by add_fragment_metadata(), and set_backend_version().

◆ set_checksum()

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

◆ set_fragment_backend_metadata_size()

int set_fragment_backend_metadata_size ( char * buf,
int size )

◆ set_fragment_idx()

int set_fragment_idx ( char * buf,
int idx )

Definition at line 275 of file erasurecode_helpers.c.

References set_fragment_idx().

Referenced by add_fragment_metadata(), and set_fragment_idx().

◆ set_fragment_payload_size()

int set_fragment_payload_size ( char * buf,
int size )

◆ set_libec_version()

int set_libec_version ( char * buf)

Definition at line 400 of file erasurecode_helpers.c.

References is_fragment(), and set_libec_version().

Referenced by add_fragment_metadata(), and set_libec_version().

◆ set_orig_data_size()

int set_orig_data_size ( char * buf,
int orig_data_size )

Definition at line 372 of file erasurecode_helpers.c.

References set_orig_data_size().

Referenced by add_fragment_metadata(), and set_orig_data_size().