Draft: lab 5 failed
This commit is contained in:
@@ -47,6 +47,22 @@ static inline char *_logger_int(char *dest, int x)
|
||||
*dest = '\0';
|
||||
return dest;
|
||||
}
|
||||
static inline char *_logger_uint(char *dest, size_t x)
|
||||
{
|
||||
char arr[12], *c = &arr[11];
|
||||
arr[11] = '\0';
|
||||
|
||||
if (x == 0)
|
||||
*dest++ = '0';
|
||||
|
||||
while (x > 0)
|
||||
*--c = x % 10 + '0', x /= 10;
|
||||
|
||||
for (int i = 0; c[i] != '\0'; ++i)
|
||||
*dest++ = c[i];
|
||||
*dest = '\0';
|
||||
return dest;
|
||||
}
|
||||
static inline char *_logger_pointer(char *dest, void *x)
|
||||
{
|
||||
*dest++ = '*';
|
||||
@@ -71,6 +87,7 @@ logger_cur = _Generic((msg), \
|
||||
const char *: _logger_string, \
|
||||
uint64_t : _logger_hex, \
|
||||
int32_t : _logger_int, \
|
||||
size_t : _logger_uint, \
|
||||
default : _logger_pointer \
|
||||
)(logger_cur, msg)
|
||||
|
||||
@@ -80,7 +97,18 @@ logger_cur = _Generic((msg), \
|
||||
_I_HATE_C_LANG(val); \
|
||||
}
|
||||
|
||||
static inline
|
||||
uint64_t _r_sp()
|
||||
{
|
||||
uint64_t ret;
|
||||
asm volatile("mov %[a], sp" : [a] "=r" (ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define FLUSH(prefix) { \
|
||||
_logger_hex(sp_cur, _r_sp()); \
|
||||
_uart_puts_sync(sp_buf); \
|
||||
_uart_puts_sync(" | "); \
|
||||
_uart_puts_sync(prefix); \
|
||||
_uart_puts_sync(logger_buf); \
|
||||
_uart_puts_sync(ENDL); \
|
||||
@@ -130,7 +158,10 @@ logger_cur = _Generic((msg), \
|
||||
// #define DEBUG_INITRD(val) DEBUG(val)
|
||||
#define DEBUG_INITRD(val) CLEAN
|
||||
|
||||
#define DEBUG_THREAD(val) DEBUG(val)
|
||||
// #define DEBUG_THREAD(val) DEBUG(val)
|
||||
#define DEBUG_THREAD(val) CLEAN
|
||||
|
||||
extern char logger_buf[LOGGER_BUFLEN];
|
||||
extern char *logger_cur;
|
||||
extern char sp_buf[LOGGER_BUFLEN];
|
||||
extern char *sp_cur;
|
||||
|
||||
Reference in New Issue
Block a user