diff --git a/ion/Makefile b/ion/Makefile index 472d4d4f4..811326c28 100644 --- a/ion/Makefile +++ b/ion/Makefile @@ -4,6 +4,7 @@ include ion/src/$(PLATFORM)/Makefile objs += $(addprefix ion/src/shared/, \ c.o \ events.o \ + log_integer.o \ ) tests += $(addprefix ion/test/,\ diff --git a/ion/include/ion/c.h b/ion/include/ion/c.h index ce2ce1b98..d28430ec6 100644 --- a/ion/include/ion/c.h +++ b/ion/include/ion/c.h @@ -1,11 +1,14 @@ #ifndef ION_C_H #define ION_C_H +#include + #ifdef __cplusplus extern "C" { #endif -void ion_log_print(const char * message); +void ion_log_print_string(const char * message); +void ion_log_print_integer(uint32_t integer); #ifdef __cplusplus } diff --git a/ion/include/ion/log.h b/ion/include/ion/log.h index 0cd94ad5a..ee5c4de1c 100644 --- a/ion/include/ion/log.h +++ b/ion/include/ion/log.h @@ -1,10 +1,13 @@ #ifndef ION_LOG_H #define ION_LOG_H +#include + namespace Ion { namespace Log { void print(const char * message); +void print(uint32_t number); } } diff --git a/ion/src/blackbox/Makefile b/ion/src/blackbox/Makefile index 2a2f48899..0e2ba8f2f 100644 --- a/ion/src/blackbox/Makefile +++ b/ion/src/blackbox/Makefile @@ -4,6 +4,7 @@ objs += $(addprefix ion/src/shared/, \ events.o \ events_stdin.o \ log_printf.o \ + log_integer.o \ power.o \ ) diff --git a/ion/src/shared/c.cpp b/ion/src/shared/c.cpp index 8571b890a..12feeab32 100644 --- a/ion/src/shared/c.cpp +++ b/ion/src/shared/c.cpp @@ -1,6 +1,10 @@ #include #include -void ion_log_print(const char * message) { +void ion_log_print_integer(uint32_t i) { + Ion::Log::print(i); +} + +void ion_log_print_string(const char * message) { Ion::Log::print(message); } diff --git a/ion/src/shared/log_integer.cpp b/ion/src/shared/log_integer.cpp new file mode 100644 index 000000000..a54278146 --- /dev/null +++ b/ion/src/shared/log_integer.cpp @@ -0,0 +1,13 @@ +#include +#include + +void Ion::Log::print(uint32_t i) { + char buffer[9]; + for (int j=0; j<8; j++) { + uint8_t v = (i & 0xF); + buffer[8-1-j] = (v>9) ? 'A'+v-10 : '0'+v; + i = i >> 4; + } + buffer[8] = 0; + print(buffer); +} diff --git a/liba/src/malloc.c b/liba/src/malloc.c index e31ac3f86..cb26a78df 100644 --- a/liba/src/malloc.c +++ b/liba/src/malloc.c @@ -3,17 +3,7 @@ #include #if LIBA_LOG_DYNAMIC_MEMORY -#include #include - -void write_uint32_in_buffer(uint32_t n, char * buffer) { - for (int i=0; i<2*sizeof(uint32_t); i++) { - unsigned char v = (n & 0xF); - char c = (v>9) ? 'A'+v-10 : '0'+v; - buffer[2*sizeof(uint32_t)-1-i] = c; - n = n >> 4; - } -} #endif extern char _heap_start; @@ -41,9 +31,9 @@ static void configure_heap() { void free(void *ptr) { #if LIBA_LOG_DYNAMIC_MEMORY - char message[5+2*sizeof(uint32_t)+1] = {'F', 'R', 'E', 'E', '-'}; - write_uint32_in_buffer((uint32_t)ptr, message+5); - ion_log_print(message); + ion_log_print_string("FREE-"); + ion_log_print_integer((uint32_t)ptr); + ion_log_print_string("\n"); #endif if (ptr != NULL) { memsys5FreeUnsafe(ptr); @@ -59,12 +49,11 @@ void * malloc(size_t size) { p = memsys5MallocUnsafe(memsys5Roundup(size)); } #if LIBA_LOG_DYNAMIC_MEMORY - char message[7+2*sizeof(uint32_t)+1+2*sizeof(uint32_t)+1] = {'M','A','L','L','O','C','-'}; - write_uint32_in_buffer((uint32_t)p, message+7); - message[7+2*sizeof(uint32_t)] = '-'; - write_uint32_in_buffer(size, message+7+2*sizeof(uint32_t)+1); - message[7+2*sizeof(uint32_t)+1+2*sizeof(uint32_t)] = 0; - ion_log_print(message); + ion_log_print_string("MALLOC-"); + ion_log_print_integer((uint32_t)p); + ion_log_print_string("-"); + ion_log_print_integer((uint32_t)size); + ion_log_print_string("\n"); #endif return p; }