From 398c48c95d532906e470f7b8559ac4d043717d20 Mon Sep 17 00:00:00 2001 From: Tushar Gohad Date: Sun, 20 Sep 2015 19:52:30 +0000 Subject: [PATCH] Split helpers.h include for backward compatibility Users of liberasurecode <= 1.0.7 used alloc/free helpers (which they shouldn't have). This change is to make sure we are still able to those older revs of programs and they work with newer liberasurecode. --- Makefile.am | 7 +- include/erasurecode/erasurecode_helpers.h | 39 +-------- include/erasurecode/erasurecode_helpers_ext.h | 79 +++++++++++++++++++ src/backends/isa-l/isa_l_rs_vand.c | 1 + src/backends/jerasure/jerasure_rs_cauchy.c | 1 + src/backends/jerasure/jerasure_rs_vand.c | 1 + src/backends/rs_vand/liberasurecode_rs_vand.c | 1 + src/backends/shss/shss.c | 1 + src/erasurecode.c | 1 + src/erasurecode_helpers.c | 1 + src/erasurecode_postprocessing.c | 1 + src/erasurecode_preprocessing.c | 1 + test/libec_slap.c | 1 + test/liberasurecode_test.c | 1 + 14 files changed, 96 insertions(+), 40 deletions(-) create mode 100644 include/erasurecode/erasurecode_helpers_ext.h diff --git a/Makefile.am b/Makefile.am index b05fff6..8daa3b3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -18,6 +18,7 @@ thisinclude_HEADERS = \ include/erasurecode/erasurecode.h \ include/erasurecode/erasurecode_backend.h \ include/erasurecode/erasurecode_helpers.h \ + include/erasurecode/erasurecode_helpers_ext.h \ include/erasurecode/erasurecode_log.h \ include/erasurecode/erasurecode_preprocessing.h \ include/erasurecode/erasurecode_postprocessing.h \ @@ -32,11 +33,13 @@ thisinclude_HEADERS = \ install-exec-hook: -(cd $(DESTDIR)$(includedir) && \ - rm erasurecode.h erasurecode_version.h \ - erasurecode_stdinc.h config_liberasurecode.h && \ + rm -f erasurecode.h erasurecode_version.h \ + erasurecode_stdinc.h erasurecode_helpers.h \ + config_liberasurecode.h && \ $(LN_S) liberasurecode/erasurecode.h && \ $(LN_S) liberasurecode/erasurecode_version.h && \ $(LN_S) liberasurecode/erasurecode_stdinc.h && \ + $(LN_S) liberasurecode/erasurecode_helpers.h && \ $(LN_S) liberasurecode/config_liberasurecode.h) test: check diff --git a/include/erasurecode/erasurecode_helpers.h b/include/erasurecode/erasurecode_helpers.h index 3982b18..f0be41a 100644 --- a/include/erasurecode/erasurecode_helpers.h +++ b/include/erasurecode/erasurecode_helpers.h @@ -1,5 +1,5 @@ /* - * Copyright 2014, Kevin Greenan, Tushar Gohda, All rights reserved + * Copyright 2014, Kevin Greenan, Tushar Gohad, All rights reserved * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -29,7 +29,6 @@ #ifndef _ERASURECODE_HELPERS_H_ #define _ERASURECODE_HELPERS_H_ -#include "erasurecode_backend.h" #include "erasurecode_stdinc.h" /* ==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~== */ @@ -85,48 +84,12 @@ int convert_idx_list_to_bitvalues( return n; } -static inline -void init_fragment_header(char *buf) -{ - fragment_header_t *header = (fragment_header_t *) buf; - - header->magic = LIBERASURECODE_FRAG_HEADER_MAGIC; -} - /* ==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~== */ void *alloc_zeroed_buffer(int size); void *alloc_and_set_buffer(int size, int value); void *check_and_free_buffer(void *buf); -char *alloc_fragment_buffer(int size); -int free_fragment_buffer(char *buf); void *get_aligned_buffer16(int size); -int get_aligned_data_size(ec_backend_t instance, int data_len); -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); -uint64_t get_fragment_size(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_checksum(ec_checksum_type_t ct, char *buf, int blocksize); -int get_checksum(char *buf); //TODO implement this -int set_libec_version(char *fragment); -int get_libec_version(char *fragment, 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); /* ==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~== */ diff --git a/include/erasurecode/erasurecode_helpers_ext.h b/include/erasurecode/erasurecode_helpers_ext.h new file mode 100644 index 0000000..278996b --- /dev/null +++ b/include/erasurecode/erasurecode_helpers_ext.h @@ -0,0 +1,79 @@ +/* + * Copyright 2014, Kevin Greenan, Tushar Gohad, All rights reserved + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY + * THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * liberasurecode proprocssing helpers header + * + * vi: set noai tw=79 ts=4 sw=4: + */ + +#ifndef _ERASURECODE_HELPERS_EXT_H_ +#define _ERASURECODE_HELPERS_EXT_H_ + +#include "erasurecode_backend.h" +#include "erasurecode_helpers.h" + +/* ==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~== */ + +static inline +void init_fragment_header(char *buf) +{ + fragment_header_t *header = (fragment_header_t *) buf; + + header->magic = LIBERASURECODE_FRAG_HEADER_MAGIC; +} + +/* ==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~== */ + +char *alloc_fragment_buffer(int size); +int free_fragment_buffer(char *buf); +int get_aligned_data_size(ec_backend_t instance, int data_len); +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); +uint64_t get_fragment_size(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_checksum(ec_checksum_type_t ct, char *buf, int blocksize); +int get_checksum(char *buf); //TODO implement this +int set_libec_version(char *fragment); +int get_libec_version(char *fragment, 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); + +/* ==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~== */ + +#endif // _ERASURECODE_HELPERS_EXT_H_ + diff --git a/src/backends/isa-l/isa_l_rs_vand.c b/src/backends/isa-l/isa_l_rs_vand.c index 541d308..dba1e1a 100644 --- a/src/backends/isa-l/isa_l_rs_vand.c +++ b/src/backends/isa-l/isa_l_rs_vand.c @@ -33,6 +33,7 @@ #include "erasurecode.h" #include "erasurecode_backend.h" #include "erasurecode_helpers.h" +#include "erasurecode_helpers_ext.h" #define ISA_L_RS_VAND_LIB_MAJOR 2 #define ISA_L_RS_VAND_LIB_MINOR 13 diff --git a/src/backends/jerasure/jerasure_rs_cauchy.c b/src/backends/jerasure/jerasure_rs_cauchy.c index 307dbe9..b75f855 100644 --- a/src/backends/jerasure/jerasure_rs_cauchy.c +++ b/src/backends/jerasure/jerasure_rs_cauchy.c @@ -32,6 +32,7 @@ #include "erasurecode.h" #include "erasurecode_backend.h" #include "erasurecode_helpers.h" +#include "erasurecode_helpers_ext.h" #define JERASURE_RS_CAUCHY_LIB_MAJOR 2 #define JERASURE_RS_CAUCHY_LIB_MINOR 0 diff --git a/src/backends/jerasure/jerasure_rs_vand.c b/src/backends/jerasure/jerasure_rs_vand.c index ea2a846..a30e9c7 100644 --- a/src/backends/jerasure/jerasure_rs_vand.c +++ b/src/backends/jerasure/jerasure_rs_vand.c @@ -32,6 +32,7 @@ #include "erasurecode.h" #include "erasurecode_backend.h" #include "erasurecode_helpers.h" +#include "erasurecode_helpers_ext.h" #define JERASURE_RS_VAND_LIB_MAJOR 2 #define JERASURE_RS_VAND_LIB_MINOR 0 diff --git a/src/backends/rs_vand/liberasurecode_rs_vand.c b/src/backends/rs_vand/liberasurecode_rs_vand.c index 3b1928f..e1aab68 100644 --- a/src/backends/rs_vand/liberasurecode_rs_vand.c +++ b/src/backends/rs_vand/liberasurecode_rs_vand.c @@ -30,6 +30,7 @@ #include "erasurecode.h" #include "erasurecode_backend.h" #include "erasurecode_helpers.h" +#include "erasurecode_helpers_ext.h" #define LIBERASURECODE_RS_VAND_LIB_MAJOR 1 #define LIBERASURECODE_RS_VAND_LIB_MINOR 0 diff --git a/src/backends/shss/shss.c b/src/backends/shss/shss.c index 601fc01..d6d1531 100644 --- a/src/backends/shss/shss.c +++ b/src/backends/shss/shss.c @@ -34,6 +34,7 @@ #include "erasurecode.h" #include "erasurecode_helpers.h" +#include "erasurecode_helpers_ext.h" #include "erasurecode_backend.h" /* Forward declarations */ diff --git a/src/erasurecode.c b/src/erasurecode.c index 5a75a55..239e081 100644 --- a/src/erasurecode.c +++ b/src/erasurecode.c @@ -30,6 +30,7 @@ #include "erasurecode.h" #include "erasurecode_backend.h" #include "erasurecode_helpers.h" +#include "erasurecode_helpers_ext.h" #include "erasurecode_preprocessing.h" #include "erasurecode_postprocessing.h" #include "erasurecode_stdinc.h" diff --git a/src/erasurecode_helpers.c b/src/erasurecode_helpers.c index 54ff158..c9fa288 100644 --- a/src/erasurecode_helpers.c +++ b/src/erasurecode_helpers.c @@ -30,6 +30,7 @@ #include #include "erasurecode_backend.h" #include "erasurecode_helpers.h" +#include "erasurecode_helpers_ext.h" #include "erasurecode_stdinc.h" #include "erasurecode_version.h" diff --git a/src/erasurecode_postprocessing.c b/src/erasurecode_postprocessing.c index af418fa..d91a4fe 100644 --- a/src/erasurecode_postprocessing.c +++ b/src/erasurecode_postprocessing.c @@ -28,6 +28,7 @@ #include "erasurecode_backend.h" #include "erasurecode_helpers.h" +#include "erasurecode_helpers_ext.h" #include "erasurecode_stdinc.h" void add_fragment_metadata(ec_backend_t be, char *fragment, diff --git a/src/erasurecode_preprocessing.c b/src/erasurecode_preprocessing.c index 406dfc7..64c7edd 100644 --- a/src/erasurecode_preprocessing.c +++ b/src/erasurecode_preprocessing.c @@ -28,6 +28,7 @@ #include "erasurecode_backend.h" #include "erasurecode_helpers.h" +#include "erasurecode_helpers_ext.h" #include "erasurecode_log.h" #include "erasurecode_preprocessing.h" #include "erasurecode_stdinc.h" diff --git a/test/libec_slap.c b/test/libec_slap.c index ac69ee4..63640a7 100644 --- a/test/libec_slap.c +++ b/test/libec_slap.c @@ -42,6 +42,7 @@ #include #include "erasurecode.h" #include "erasurecode_helpers.h" +#include "erasurecode_helpers_ext.h" #include "builtin/xor_codes/test_xor_hd_code.h" struct frag_array_set { diff --git a/test/liberasurecode_test.c b/test/liberasurecode_test.c index 875ab96..b5239a9 100644 --- a/test/liberasurecode_test.c +++ b/test/liberasurecode_test.c @@ -30,6 +30,7 @@ #include #include "erasurecode.h" #include "erasurecode_helpers.h" +#include "erasurecode_helpers_ext.h" #include "erasurecode_preprocessing.h" #include "erasurecode_backend.h" #include "alg_sig.h"