Skip to content
Snippets Groups Projects
Commit 91383c73 authored by Thomas Jahns's avatar Thomas Jahns :cartwheel: Committed by Sergey Kosukhin
Browse files

Extend endianness-invariant check-summing API for continuation.

parent fa384961
No related branches found
No related tags found
2 merge requests!34Version 2.2.0,!13Consolidation with CDI-PIO (develop)
......@@ -18,6 +18,27 @@ cdiCheckSum(int type, int count, const void *buffer)
return s;
}
void
cdiCheckSumRStart(struct cdiCheckSumState *state)
{
state->sum = 0U;
state->len = 0;
}
void
cdiCheckSumRAdd(struct cdiCheckSumState *state, int type, int count, const void *buffer)
{
size_t elemSize = (size_t) serializeGetSizeInCore(1, type, NULL);
memcrc_r_eswap(&state->sum, (const unsigned char *) buffer, (size_t) count, elemSize);
state->len += (off_t) (elemSize * (size_t) count);
}
uint32_t
cdiCheckSumRValue(struct cdiCheckSumState state)
{
return memcrc_finish(&state.sum, state.len);
}
/*
* Local Variables:
* c-file-style: "Java"
......
......@@ -3,8 +3,25 @@
#include <inttypes.h>
/* single checksum computation over one array */
uint32_t cdiCheckSum(int type, int count, const void *data);
/* composable check-sum computation,
* 0. datatype,
* 1. init,
* 2. partial, appendable computation, and
* 3. final checksum-computation
*/
struct cdiCheckSumState
{
uint32_t sum;
off_t len;
};
void cdiCheckSumRStart(struct cdiCheckSumState *state);
void cdiCheckSumRAdd(struct cdiCheckSumState *state, int type, int count, const void *data);
uint32_t cdiCheckSumRValue(struct cdiCheckSumState state);
#endif
/*
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment