liberasurecode  1.2.0
Erasure Code API library
 All Data Structures Files Functions Variables Typedefs Macros
Functions
erasurecode_helpers.c File Reference
#include <assert.h>
#include <stdio.h>
#include <stdarg.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)
 
uint32_t * get_chksum (char *buf)
 
int set_metadata_chksum (char *buf)
 
uint32_t * get_metadata_chksum (char *buf)
 

Function Documentation

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 96 of file erasurecode_helpers.c.

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

char* alloc_fragment_buffer ( int  size)
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 83 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().

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 115 of file erasurecode_helpers.c.

Referenced by prepare_fragments_for_encode().

int free_fragment_buffer ( char *  buf)

Definition at line 138 of file erasurecode_helpers.c.

Referenced by prepare_fragments_for_encode().

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 60 of file erasurecode_helpers.c.

Referenced by alloc_fragment_buffer(), and fragments_to_string().

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_tinstance (to extract args)
data_len,integerlength of data in bytes
Returns
integer data length aligned with wordsize of EC algorithm

Definition at line 184 of file erasurecode_helpers.c.

Referenced by liberasurecode_get_fragment_size(), and prepare_fragments_for_encode().

int get_backend_id ( char *  buf,
ec_backend_id_t *  id 
)

Definition at line 429 of file erasurecode_helpers.c.

References is_fragment().

int get_backend_version ( char *  buf,
uint32_t *  version 
)

Definition at line 449 of file erasurecode_helpers.c.

References is_fragment().

uint32_t* get_chksum ( char *  buf)
inline

Definition at line 489 of file erasurecode_helpers.c.

int get_data_ptr_array_from_fragments ( char **  data_array,
char **  fragments,
int  num_fragments 
)
char* get_data_ptr_from_fragment ( char *  buf)
int get_fragment_backend_metadata_size ( char *  buf)

Definition at line 345 of file erasurecode_helpers.c.

int get_fragment_buffer_size ( char *  buf)

Definition at line 358 of file erasurecode_helpers.c.

Referenced by get_fragment_size().

int get_fragment_idx ( char *  buf)

Definition at line 289 of file erasurecode_helpers.c.

Referenced by fragments_to_string(), and get_fragment_partition().

int get_fragment_payload_size ( char *  buf)

Definition at line 317 of file erasurecode_helpers.c.

Referenced by fragments_to_string(), and prepare_fragments_for_decode().

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

Definition at line 233 of file erasurecode_helpers.c.

References get_fragment_ptr_from_data().

Referenced by liberasurecode_encode().

char* get_fragment_ptr_from_data ( char *  buf)
char* get_fragment_ptr_from_data_novalidate ( char *  buf)

Definition at line 249 of file erasurecode_helpers.c.

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 167 of file erasurecode_helpers.c.

References get_fragment_buffer_size().

Referenced by liberasurecode_encode().

int get_libec_version ( char *  buf,
uint32_t *  ver 
)

Definition at line 409 of file erasurecode_helpers.c.

References is_fragment().

Referenced by is_invalid_fragment().

uint32_t* get_metadata_chksum ( char *  buf)
inline

Definition at line 520 of file erasurecode_helpers.c.

Referenced by is_invalid_fragment_header().

int get_orig_data_size ( char *  buf)

Definition at line 386 of file erasurecode_helpers.c.

Referenced by fragments_to_string(), and prepare_fragments_for_decode().

static bool is_fragment ( char *  buf)
static
int set_backend_id ( char *  buf,
ec_backend_id_t  id 
)

Definition at line 419 of file erasurecode_helpers.c.

References is_fragment().

Referenced by add_fragment_metadata().

int set_backend_version ( char *  buf,
uint32_t  version 
)

Definition at line 439 of file erasurecode_helpers.c.

References is_fragment().

Referenced by add_fragment_metadata().

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

Definition at line 461 of file erasurecode_helpers.c.

References crc32(), and get_data_ptr_from_fragment().

Referenced by add_fragment_metadata().

int set_fragment_backend_metadata_size ( char *  buf,
int  size 
)

Definition at line 330 of file erasurecode_helpers.c.

Referenced by add_fragment_metadata().

int set_fragment_idx ( char *  buf,
int  idx 
)

Definition at line 274 of file erasurecode_helpers.c.

Referenced by add_fragment_metadata().

int set_fragment_payload_size ( char *  buf,
int  size 
)

Definition at line 302 of file erasurecode_helpers.c.

Referenced by add_fragment_metadata().

int set_libec_version ( char *  buf)

Definition at line 399 of file erasurecode_helpers.c.

References is_fragment().

Referenced by add_fragment_metadata().

int set_metadata_chksum ( char *  buf)
inline

Definition at line 505 of file erasurecode_helpers.c.

References crc32().

Referenced by add_fragment_metadata().

int set_orig_data_size ( char *  buf,
int  orig_data_size 
)

Definition at line 371 of file erasurecode_helpers.c.

Referenced by add_fragment_metadata().