bitmaps should be unsigned otherwise bit shifting may not behave
as expected.
This commit is contained in:
@@ -61,9 +61,9 @@ typedef struct xor_code_s
|
||||
int (*fragments_needed)(struct xor_code_s *code_desc, int *missing_idxs, int *fragments_needed);
|
||||
} xor_code_t;
|
||||
|
||||
int is_data_in_parity(int data_idx, int parity_bm);
|
||||
int is_data_in_parity(int data_idx, unsigned int parity_bm);
|
||||
|
||||
int does_parity_have_data(int parity_idx, int data_bm);
|
||||
int does_parity_have_data(int parity_idx, unsigned int data_bm);
|
||||
|
||||
int parity_bit_lookup(xor_code_t *code_desc, int index);
|
||||
|
||||
|
||||
@@ -365,7 +365,7 @@ int run_aligned_malloc_test() {
|
||||
if (!tmem) {
|
||||
return -1;
|
||||
}
|
||||
if (memset(tmem,'0',actual_amount) != tmem) {
|
||||
if (memset(tmem,0,actual_amount) != tmem) {
|
||||
return -1;
|
||||
}
|
||||
aligned_free(tmem);
|
||||
@@ -379,7 +379,6 @@ int main()
|
||||
{
|
||||
int ret = 0;
|
||||
int i;
|
||||
|
||||
ret = run_aligned_malloc_test();
|
||||
if (ret != 0) {
|
||||
return ret;
|
||||
@@ -405,12 +404,12 @@ int main()
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
for (i=5; i < 11; i++) {
|
||||
ret = run_test(i, 5, 4);
|
||||
if (ret != 0) {
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -38,12 +38,12 @@ const int g_bit_lookup[] = {0x1, 0x2, 0x4, 0x8,
|
||||
0x1000000, 0x2000000, 0x4000000, 0x8000000,
|
||||
0x10000000, 0x20000000, 0x40000000, 0x80000000};
|
||||
|
||||
int is_data_in_parity(int data_idx, int parity_bm)
|
||||
int is_data_in_parity(int data_idx, unsigned int parity_bm)
|
||||
{
|
||||
return ((g_bit_lookup[data_idx] & parity_bm) == g_bit_lookup[data_idx]);
|
||||
}
|
||||
|
||||
int does_parity_have_data(int parity_idx, int data_bm)
|
||||
int does_parity_have_data(int parity_idx, unsigned int data_bm)
|
||||
{
|
||||
return ((g_bit_lookup[parity_idx] & data_bm) == g_bit_lookup[parity_idx]);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
/*
|
||||
* Returns -1 if not possible
|
||||
*/
|
||||
static int fragments_needed_one_data(xor_code_t *code_desc, int *missing_data, int *missing_parity, int *data_bm, int *parity_bm)
|
||||
static int fragments_needed_one_data(xor_code_t *code_desc, int *missing_data, int *missing_parity, unsigned int *data_bm, unsigned int *parity_bm)
|
||||
{
|
||||
int data_index = missing_data[0];
|
||||
int parity_index = index_of_connected_parity(code_desc, data_index, missing_parity, missing_data);
|
||||
@@ -53,7 +53,7 @@ static int fragments_needed_one_data(xor_code_t *code_desc, int *missing_data, i
|
||||
/*
|
||||
* Returns -1 if not possible
|
||||
*/
|
||||
static int fragments_needed_two_data(xor_code_t *code_desc, int *missing_data, int *missing_parity, int *data_bm, int *parity_bm)
|
||||
static int fragments_needed_two_data(xor_code_t *code_desc, int *missing_data, int *missing_parity, unsigned int *data_bm, unsigned int *parity_bm)
|
||||
{
|
||||
// Verify that missing_data[2] == -1?
|
||||
int data_index = missing_data[0];
|
||||
@@ -89,7 +89,7 @@ static int fragments_needed_two_data(xor_code_t *code_desc, int *missing_data, i
|
||||
/*
|
||||
* Returns -1 if not possible
|
||||
*/
|
||||
static int fragments_needed_three_data(xor_code_t *code_desc, int *missing_data, int *missing_parity, int *data_bm, int *parity_bm)
|
||||
static int fragments_needed_three_data(xor_code_t *code_desc, int *missing_data, int *missing_parity, unsigned int *data_bm, unsigned int *parity_bm)
|
||||
{
|
||||
int i = 0;
|
||||
int parity_index = -1;
|
||||
@@ -179,7 +179,7 @@ static int fragments_needed_three_data(xor_code_t *code_desc, int *missing_data,
|
||||
int xor_hd_fragments_needed(xor_code_t *code_desc, int *missing_idxs, int *fragments_needed)
|
||||
{
|
||||
failure_pattern_t pattern = get_failure_pattern(code_desc, missing_idxs);
|
||||
int data_bm = 0, parity_bm = 0;
|
||||
unsigned int data_bm = 0, parity_bm = 0;
|
||||
int ret = 0;
|
||||
int i, j;
|
||||
|
||||
@@ -211,7 +211,7 @@ int xor_hd_fragments_needed(xor_code_t *code_desc, int *missing_idxs, int *fragm
|
||||
{
|
||||
int *missing_data = get_missing_data(code_desc, missing_idxs);
|
||||
int *missing_parity = get_missing_parity(code_desc, missing_idxs);
|
||||
int missing_data_bm = missing_elements_bm(code_desc, missing_data, data_bit_lookup);
|
||||
unsigned int missing_data_bm = missing_elements_bm(code_desc, missing_data, data_bit_lookup);
|
||||
ret = fragments_needed_one_data(code_desc, missing_data, missing_parity, &data_bm, &parity_bm);
|
||||
// OR all parities
|
||||
i=0;
|
||||
@@ -245,7 +245,7 @@ int xor_hd_fragments_needed(xor_code_t *code_desc, int *missing_idxs, int *fragm
|
||||
{
|
||||
int *missing_data = get_missing_data(code_desc, missing_idxs);
|
||||
int *missing_parity = get_missing_parity(code_desc, missing_idxs);
|
||||
int missing_data_bm = missing_elements_bm(code_desc, missing_data, data_bit_lookup);
|
||||
unsigned int missing_data_bm = missing_elements_bm(code_desc, missing_data, data_bit_lookup);
|
||||
ret = fragments_needed_two_data(code_desc, missing_data, missing_parity, &data_bm, &parity_bm);
|
||||
// OR all parities
|
||||
i=0;
|
||||
@@ -384,7 +384,7 @@ static void decode_three_data(xor_code_t *code_desc, char **data, char **parity,
|
||||
int i = 0;
|
||||
int parity_index = -1;
|
||||
int data_index = -1;
|
||||
int parity_bm = -1;
|
||||
unsigned int parity_bm = -1;
|
||||
char *parity_buffer = NULL;
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user