Skip to content
Snippets Groups Projects
Commit 64676909 authored by Georges Da Costa's avatar Georges Da Costa
Browse files

Corrects the overflow bug of Intel RAPL

parent 64dd7f88
No related branches found
No related tags found
1 merge request!11Intel rapl
Pipeline #9362 passed
......@@ -118,7 +118,7 @@ int add_rapl_source_from_str(IntelRapl *rapl, const char*name_base, const int i)
append(tmp, i, MAX_HEADER); // tmp contains the name with its index. ex: dram0
snprintf(buffer, BUFFER_SIZE, name_base, i);
strcat(buffer, "name");
strcat(buffer, "max_energy_range_uj");
uint64_t modulo = strtoull(get_rapl_string(buffer), NULL, 10);
snprintf(buffer, BUFFER_SIZE, name_base, i);
......@@ -180,7 +180,9 @@ unsigned int get_rapl(uint64_t *results, void *ptr)
for (unsigned int i = 0; i < state->nb; i++) {
results[i] = modulo_substraction(state->tmp_values[i], state->values[i]);
results[i] = modulo_substraction_bound(state->tmp_values[i],
state->values[i],
state->modulo[i]);
}
memcpy(state->values, state->tmp_values, sizeof(uint64_t)*state->nb);
......
......@@ -26,3 +26,9 @@ uint64_t modulo_substraction(const uint64_t lhs, const uint64_t rhs)
return lhs >= rhs ? (lhs - rhs)
: (UINT64_MAX - rhs + 1) + lhs;
}
uint64_t modulo_substraction_bound(const uint64_t lhs, const uint64_t rhs, const uint64_t modulo)
{
return lhs >= rhs ? (lhs - rhs)
: (modulo - rhs + 1) + lhs;
}
......@@ -23,12 +23,6 @@
#include <stdint.h>
#define CASSERT(predicate, file) _impl_CASSERT_LINE(predicate,__LINE__,file)
#define _impl_PASTE(a,b) a##b
#define _impl_CASSERT_LINE(predicate, line, file) \
typedef char _impl_PASTE(assertion_failed_##file##_,line)[2*!!(predicate)-1];
#define UNUSED(expr) do { (void)(expr); } while (0)
#define PANIC(code, fmt, ...) \
do { \
......@@ -49,5 +43,6 @@
* @return uint64_t
*/
uint64_t modulo_substraction(const uint64_t lhs, const uint64_t rhs);
uint64_t modulo_substraction_bound(const uint64_t lhs, const uint64_t rhs, const uint64_t modulo);
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment