feat: added basic ACPI support using LAI
This commit is contained in:
80
kernel/acpi/lailayer.c
Normal file
80
kernel/acpi/lailayer.c
Normal file
@@ -0,0 +1,80 @@
|
||||
//
|
||||
// Created by rick on 26-08-21.
|
||||
//
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <lai/host.h>
|
||||
#include <myke/acpi/acpi.h>
|
||||
#include <myke/drivers/ports.h>
|
||||
#include <myke/libk/libk.h>
|
||||
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user