Draft: lab 5 failed

This commit is contained in:
2025-05-03 20:45:34 +08:00
parent 981cae803b
commit e73f90395d
39 changed files with 588 additions and 429 deletions

View File

@@ -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;