summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTushar Gohad <tushar.gohad@intel.com>2014-05-04 07:52:04 -0700
committerTushar Gohad <tushar.gohad@intel.com>2014-05-05 22:32:31 -0700
commite376653787fb492df6a6189f965f4cf941ee88c0 (patch)
tree7afee23f46d2959e02a1e1625b15309a17224a5a
parent1d6b2bcf1cc2cc66725c14fe6df12d0e93e87d6e (diff)
downloadpyeclib-e376653787fb492df6a6189f965f4cf941ee88c0.tar.gz
c_eclib: Add encode routine for rs_vand_isa_l
-rw-r--r--src/c/pyeclib_c/pyeclib_c.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/c/pyeclib_c/pyeclib_c.c b/src/c/pyeclib_c/pyeclib_c.c
index 49f4e70..f2ce92a 100644
--- a/src/c/pyeclib_c/pyeclib_c.c
+++ b/src/c/pyeclib_c/pyeclib_c.c
@@ -958,6 +958,7 @@ pyeclib_c_encode(PyObject *self, PyObject *args)
char *fragment = alloc_fragment_buffer(blocksize);
encoded_parity[i] = get_data_ptr_from_fragment(fragment);
if (encoded_parity[i] == NULL) {
+ // FIXME call out variable names in allocation failures
PyErr_SetString(PyECLibError, "Could not allocate memory in pyeclib.encode");
return NULL;
}
@@ -966,7 +967,22 @@ pyeclib_c_encode(PyObject *self, PyObject *args)
switch (pyeclib_handle->type) {
case PYECC_RS_VAND_ISA_L:
+ {
+ unsigned char *g_tbls = NULL;
+ int k = pyeclib_handle->k;
+ int m = pyeclib_handle->m;
+ // Generate g_tbls from encode matrix encode_matrix
+ g_tbls = talloc(unsigned char, k * m * 32);
+ if (g_tbls == NULL) {
+ PyErr_SetString(PyECLibError, "Could not allocate memory for g_tbls in pyeclib.encode");
+ return NULL;
+ }
+
+ ec_init_tables(k, m, (unsigned char *) &pyeclib_handle->matrix[k * k], (unsigned char *) g_tbls);
+ // Encode
+ ec_encode_data(blocksize, k, m, g_tbls, (unsigned char **) data_to_encode, (unsigned char **) encoded_parity);
break;
+ }
case PYECC_RS_CAUCHY_ISA_L:
break;
case PYECC_RS_CAUCHY_ORIG: