103 for(
size_t i = msg_start; i < msg_end-1; ++i) {
104 while((
inb(0x3F8 + 5) & 0x20) == 0) {}
107 while((
inb(0x3F8 + 5) & 0x20) == 0) {}
109 while((
inb(0x3F8 + 5) & 0x20) == 0) {}
120void log(
char level,
char* component,
char* fmt, ...) {
126 kvsnprintf(buffer,
sizeof(buffer), fmt, args);
void efi_append_log(char *msg)
int fbconsole_write(char *string,...)
static uint8_t inb(uint16_t port)
static void outb(uint16_t port, uint8_t data)
size_t strlen(const char *str)
void * memset(void *dest, int c, size_t size)
size_t ksnprintf(char *buffer, size_t buffer_size, const char *format,...)
size_t kvsnprintf(char *buffer, size_t buffer_size, const char *format, va_list args)
struct logging_page * prev
struct logging_page * next
void log(char level, char *component, char *fmt,...)
char messages[logging_page_size - 18]
void sc_handle_debug_print(char *message)
void log_append_page(void)
const int logging_page_size
struct logging_page * log_first
void log_append(char level, char *component, char *message)
struct logging_page log_initial_page
struct logging_page * log_last
#define logd(component, fmt,...)
volatile pid_t scheduler_current_process
__builtin_va_list va_list
static bool struct Message * message
void * vm_alloc(size_t size)
Like malloc but allocates full pages only. 16 byte data overhead.
void vm_free(void *ptr)
the matching free() like function for vm_alloc