Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
ioforge.h
Go to the documentation of this file.
1#ifndef __SYS__IOFORGE__IOFORGE_H_
2#define __SYS__IOFORGE__IOFORGE_H_
3
4#include <type.h>
5
6#define IOFORGE_SERVICE_NAME_MAX_LEN 64
7
8// ioforge /pci/00:01:03
9
21
22#define IOFORGE_F_ENABLE 1
23#define IOFORGE_F_VIRTIO (1 << 31)
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
34
35 struct ioforge_device* parent; /* NULL = root */
36 struct ioforge_device* first_child; /* kepala linked list anak */
37 struct ioforge_device* next_sibling; /* sibling kanan */
38 struct ioforge_device* prev_sibling; /* sibling kiri (opsional) */
39
40 // struct ioforge_ops* ops;
41};
42
43void serial2_printf(const char* fmt, ...);
44void* ioforge_dma_alloc(size_t size, uintptr_t* paddr);
45void* ioforge_dma_alloc(size_t size, uintptr_t* paddr);
46void ioforge_memset(void* ptr, uint8_t value, size_t num);
47void ioforge_memcpy(void* dst, void* src, size_t num);
51uint32_t isr_irq_register(uint8_t irq, void* handler);
52
53void ioforge_irq_register(uint8_t n, void* handler);
55void serial_printf(const char* fmt, ...);
56void* ioforge_alloc(size_t size);
57void ioforge_dma_free(void* paddr, void* vaddr, size_t size);
58void IOforgeStrCopy(char* dst, char* src);
59void IOforgeStrnCopy(char* dst, char* src, size_t len);
60
62void ioforge_free(void* ptr, size_t size);
63
65 struct ioforge_device* child);
68 const char* name);
70
73
77void print_device_tree(struct ioforge_device* node, int indent);
78
80
81#ifdef __cplusplus
82}
83#endif
84
85#endif // __SYS__IOFORGE__IOFORGE_H_
kstring name
Definition dentry.h:5
dentry_ptr parent
Definition dentry.h:7
static ssfn_buf_t dst
Definition graphic.c:82
static struct ioforge_device * root
Definition ioforge.c:25
uint8_t ioforge_get_current_core_id()
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)
struct ioforge_device * ioforge_get_root()
void IOforgeStrCopy(char *dst, char *src)
void ioforge_map_isr(uint8_t irq, uint8_t vector)
struct ioforge_device * ioforge_find_by_name(struct ioforge_device *root, const char *name)
void print_device_tree(struct ioforge_device *node, int indent)
void ioforge_dma_free(void *paddr, void *vaddr, size_t size)
uint32_t isr_irq_register(uint8_t irq, void *handler)
bool ioforge_can_contain_pci(IoForgeType type)
Definition ioforge.c:149
void serial_printf(const char *fmt,...)
void ioforge_free(void *ptr, size_t size)
void * ioforge_dma_alloc(size_t size, uintptr_t *paddr)
void ioforge_attach(struct ioforge_device *parent, struct ioforge_device *child)
void serial2_printf(const char *fmt,...)
void ioforge_sleep(uint32_t time)
uintptr_t IOforgeMMapPhys(uintptr_t paddr, size_t size)
struct ioforge_device * ioforge_get_pci_root()
struct ioforge_device * ioforge_get_block_devices_root()
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()
struct ioforge_pci_device * ioforge_find_pci_device(struct ioforge_device *node, uint16_t vendor_id, uint16_t device_id)
#define IOFORGE_SERVICE_NAME_MAX_LEN
Definition ioforge.h:6
IoForgeType
Definition ioforge.h:10
@ IOFORGE_ACPI
Definition ioforge.h:14
@ IOFORGE_BLOCK
Definition ioforge.h:19
@ IOFORGE_NIC
Definition ioforge.h:16
@ IOFORGE_USB_CONTROLLER
Definition ioforge.h:17
@ IOFORGE_PCI
Definition ioforge.h:12
@ IOFORGE_PCI_BUS
Definition ioforge.h:13
@ IOFORGE_ROOT
Definition ioforge.h:11
@ IOFORGE_USB_DEVICE
Definition ioforge.h:15
@ IOFORGE_VIRTIO
Definition ioforge.h:18
void ioforge_irq_register(uint8_t n, void *handler)
size_t len
Definition oct2bin.h:7
return value
Definition oct2bin.h:22
uint32_t flags
Definition ioforge.h:32
struct ioforge_device * parent
Definition ioforge.h:35
struct ioforge_device * first_child
Definition ioforge.h:36
char name[64]
Definition ioforge.h:30
struct ioforge_device * prev_sibling
Definition ioforge.h:38
uint32_t address
Definition ioforge.h:33
struct ioforge_device * next_sibling
Definition ioforge.h:37
IoForgeType type
Definition ioforge.h:31
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
uint8_t type
Definition vnode.h:2
size_t size
Definition vnode.h:3
uint64_t ptr
Definition xhci.hpp:0