Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
ioforge.hpp
Go to the documentation of this file.
1#ifndef __IOFORGE__IOFORGE_HPP__
2#define __IOFORGE__IOFORGE_HPP__
3
4#include "ioforge.h"
5#include <cpu/core.h>
6
7#define IoForgeModuleConstructor(Class) \
8 static Class instance; \
9 extern "C" void load(); \
10 extern "C" void load() { instance.load(); }
11
12#define log(mod, fmt, ...) \
13 serial2_printf("[INFO][%s][CORE %d] " fmt "\n", mod, \
14 (int)get_current_core_cpuid(), ##__VA_ARGS__)
15
16class IOForge {
17 public:
18 inline IOForge(const char* mod) : mod(mod) {}
19
20 class IOUtils {
21 public:
22 // NOTE!: operasi DMA minimal alokasi 1 block (4kb)
23 inline static void* DMAAlloc(size_t size, uintptr_t* paddr) {
24 return ioforge_dma_alloc(size, paddr);
25 }
26 inline static void sleep(uint32_t us) { ioforge_sleep(us); }
27 inline static void isr_map(uint8_t irq, uint8_t vector) {
29 }
30 inline static uint16_t irq_alloc_entry() {
32 }
33 inline static void irq_register(uint8_t n, void* handler) {
34 ioforge_irq_register(n, handler);
35 }
36 inline static uint32_t isr_get_vector(uint8_t irq) {
37 return ioforge_isr_get_vector(irq);
38 }
39 inline static void* alloc(size_t size) {
40 return ioforge_alloc(size);
41 }
42 inline static void free(void* ptr, size_t size) {
44 }
45 inline static void DMAFree(void* paddr, void* vaddr,
46 size_t size) {
47 ioforge_dma_free(paddr, vaddr, size);
48 }
49 inline static void memset(void* ptr, uint8_t value,
50 size_t num) {
52 }
53 inline static void memcpy(void* dst, void* src, size_t num) {
54 ioforge_memcpy(dst, src, num);
55 }
56 inline static void strcopy(char* dst, char* src) {
57 IOforgeStrCopy(dst, src);
58 }
59 inline static void strncopy(char* dst, char* src, size_t len) {
60 IOforgeStrnCopy(dst, src, len);
61 }
62 };
63
64 protected:
65 const char* mod;
66
67 // private:
68};
69
70// memory allocation
71// void* operator new(size_t size) { return IOForge::IOUtils::alloc(size); }
72#endif // __IOFORGE__IOFORGE_HPP__
static uint16_t irq_alloc_entry()
Definition ioforge.hpp:30
static uint32_t isr_get_vector(uint8_t irq)
Definition ioforge.hpp:36
static void free(void *ptr, size_t size)
Definition ioforge.hpp:42
static void DMAFree(void *paddr, void *vaddr, size_t size)
Definition ioforge.hpp:45
static void strncopy(char *dst, char *src, size_t len)
Definition ioforge.hpp:59
static void * alloc(size_t size)
Definition ioforge.hpp:39
static void isr_map(uint8_t irq, uint8_t vector)
Definition ioforge.hpp:27
static void strcopy(char *dst, char *src)
Definition ioforge.hpp:56
static void memcpy(void *dst, void *src, size_t num)
Definition ioforge.hpp:53
static void * DMAAlloc(size_t size, uintptr_t *paddr)
Definition ioforge.hpp:23
static void sleep(uint32_t us)
Definition ioforge.hpp:26
static void irq_register(uint8_t n, void *handler)
Definition ioforge.hpp:33
static void memset(void *ptr, uint8_t value, size_t num)
Definition ioforge.hpp:49
IOForge(const char *mod)
Definition ioforge.hpp:18
const char * mod
Definition ioforge.hpp:65
static ssfn_buf_t dst
Definition graphic.c:82
void * ioforge_alloc(size_t size)
void ioforge_memset(void *ptr, uint8_t value, size_t num)
uint32_t ioforge_isr_get_vector(uint8_t irq)
void IOforgeStrCopy(char *dst, char *src)
void ioforge_map_isr(uint8_t irq, uint8_t vector)
void ioforge_dma_free(void *paddr, void *vaddr, size_t size)
void ioforge_free(void *ptr, size_t size)
void * ioforge_dma_alloc(size_t size, uintptr_t *paddr)
void ioforge_sleep(uint32_t time)
void ioforge_memcpy(void *dst, void *src, size_t num)
void IOforgeStrnCopy(char *dst, char *src, size_t len)
uint16_t ioforge_irq_alloc_entry()
void ioforge_irq_register(uint8_t n, void *handler)
size_t len
Definition oct2bin.h:7
return value
Definition oct2bin.h:22
unsigned short uint16_t
Definition type.h:13
unsigned int uint32_t
Definition type.h:19
unsigned long uintptr_t
Definition type.h:73
unsigned char uint8_t
Definition type.h:7
#define vector(T)
Definition vector.h:11
size_t size
Definition vnode.h:3
uint64_t ptr
Definition xhci.hpp:0