// // Created by rick on 26-08-21. // #include #include #include #include #include #include const char *lai_loglevel_str(int level) { switch (level) { case LAI_DEBUG_LOG: return "debug "; case LAI_WARN_LOG: return "warn "; default: return "unknown"; } } void laihost_log(int level, const char *msg) { printf("lai [%s]: %s\n", lai_loglevel_str(level), msg); } void laihost_panic(const char *msg) { k_panics(msg); } void *laihost_malloc(size_t size) { return malloc(size); } void *laihost_realloc(void *data, size_t size, size_t old_size) { return realloc(data, size); } void laihost_free(void *data, size_t size) { free(data); } void *laihost_map(size_t address, size_t size) { return (void *) address; } void laihost_unmap(void *pointer, size_t count) { } void *laihost_scan(const char *sig, size_t index) { return acpi_find_table_by_name(sig, (int)index); } void laihost_outb(uint16_t port, uint8_t val) { port_byte_out(port, val); } void laihost_outw(uint16_t port, uint16_t val) { port_word_out(port, val); } void laihost_outd(uint16_t port, uint32_t val) { port_double_word_out(port, val); } uint8_t laihost_inb(uint16_t port) { return port_byte_in(port); } uint16_t laihost_inw(uint16_t port) { return port_word_in(port); } uint32_t laihost_ind(uint16_t port) { return port_double_word_in(port); } void laihost_sleep(uint64_t ms) { return; // todo implement for real system }