diff options
author | Tushar Gohad <tushar.gohad@intel.com> | 2014-05-04 07:52:04 -0700 |
---|---|---|
committer | Tushar Gohad <tushar.gohad@intel.com> | 2014-05-05 22:32:31 -0700 |
commit | e376653787fb492df6a6189f965f4cf941ee88c0 (patch) | |
tree | 7afee23f46d2959e02a1e1625b15309a17224a5a | |
parent | 1d6b2bcf1cc2cc66725c14fe6df12d0e93e87d6e (diff) | |
download | pyeclib-e376653787fb492df6a6189f965f4cf941ee88c0.tar.gz |
c_eclib: Add encode routine for rs_vand_isa_l
-rw-r--r-- | src/c/pyeclib_c/pyeclib_c.c | 16 |
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: |