Voxia OS
v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
ioforge_pci.h
Go to the documentation of this file.
1
#ifndef __SYS__IOFORGE__IOFORGE_PCI_H_
2
#define __SYS__IOFORGE__IOFORGE_PCI_H_
3
4
#include "
./ioforge.h
"
5
6
#ifdef __cplusplus
7
extern
"C"
{
8
#endif
9
10
struct
ioforge_pci_bar
{
11
uint64_t
address
;
12
boolean_t
iospace
;
13
};
14
15
struct
ioforge_pci_device
{
16
struct
ioforge_device
base
;
17
size_t
pci_dev
;
18
size_t
pci_bus
;
19
size_t
pci_func
;
20
uint16_t
vendor_id
;
21
uint16_t
device_id
;
22
uint16_t
command
;
23
uint16_t
status
;
24
uint8_t
subclass
;
25
uint8_t
classes
;
26
uint8_t
prog_if
;
27
uint8_t
revision_id
;
28
uint8_t
header_type
;
29
uint8_t
interrupt_line
;
30
uint8_t
interrupt_pin
;
31
uint8_t
min_grant
;
32
uint8_t
max_latency
;
33
uint8_t
bus
;
34
uint8_t
device
;
35
uint8_t
function
;
36
uint16_t
capability_ptr
;
37
struct
ioforge_pci_bar
bar
[6];
38
};
39
40
struct
ioforge_pci_device
*
41
ioforge_get_pci_device
(
uint16_t
vendor_id
,
uint16_t
device_id
);
42
43
void
pci_enable_msi
(
struct
ioforge_pci_device
*
pci
,
uint8_t
vector
,
uint8_t
cpu,
44
uint16_t
cap
);
45
uint16_t
pci_cap_find_msi
(
struct
ioforge_pci_device
*
pci
);
46
uint16_t
pci_cap_find_msix
(
struct
ioforge_pci_device
*
pci
);
47
48
uintptr_t
pci_enable_msix
(
struct
ioforge_pci_device
*
pci
,
49
uint8_t
vector
,
uint8_t
cpu,
50
uint16_t
cap
);
51
52
#ifdef __cplusplus
53
}
54
#endif
55
56
#endif
// __SYS__IOFORGE__IOFORGE_PCI_H_
cap
volatile uint32_t cap
Definition
ehci.hpp:2
ioforge.h
pci_cap_find_msi
uint16_t pci_cap_find_msi(struct ioforge_pci_device *pci)
pci_enable_msi
void pci_enable_msi(struct ioforge_pci_device *pci, uint8_t vector, uint8_t cpu, uint16_t cap)
pci_enable_msix
uintptr_t pci_enable_msix(struct ioforge_pci_device *pci, uint8_t vector, uint8_t cpu, uint16_t cap)
pci_cap_find_msix
uint16_t pci_cap_find_msix(struct ioforge_pci_device *pci)
ioforge_get_pci_device
struct ioforge_pci_device * ioforge_get_pci_device(uint16_t vendor_id, uint16_t device_id)
pci
struct ioforge_pci_device pci
Definition
ioforge_virtio.h:0
device_id
Definition
vnode.h:54
ioforge_device
Definition
ioforge.h:29
ioforge_pci_bar
Definition
ioforge_pci.h:10
ioforge_pci_bar::iospace
boolean_t iospace
Definition
ioforge_pci.h:12
ioforge_pci_bar::address
uint64_t address
Definition
ioforge_pci.h:11
ioforge_pci_device
Definition
ioforge_pci.h:15
ioforge_pci_device::max_latency
uint8_t max_latency
Definition
ioforge_pci.h:32
ioforge_pci_device::device_id
uint16_t device_id
Definition
ioforge_pci.h:21
ioforge_pci_device::command
uint16_t command
Definition
ioforge_pci.h:22
ioforge_pci_device::bus
uint8_t bus
Definition
ioforge_pci.h:33
ioforge_pci_device::function
uint8_t function
Definition
ioforge_pci.h:35
ioforge_pci_device::capability_ptr
uint16_t capability_ptr
Definition
ioforge_pci.h:36
ioforge_pci_device::bar
struct ioforge_pci_bar bar[6]
Definition
ioforge_pci.h:37
ioforge_pci_device::pci_func
size_t pci_func
Definition
ioforge_pci.h:19
ioforge_pci_device::base
struct ioforge_device base
Definition
ioforge_pci.h:16
ioforge_pci_device::classes
uint8_t classes
Definition
ioforge_pci.h:25
ioforge_pci_device::device
uint8_t device
Definition
ioforge_pci.h:34
ioforge_pci_device::subclass
uint8_t subclass
Definition
ioforge_pci.h:24
ioforge_pci_device::prog_if
uint8_t prog_if
Definition
ioforge_pci.h:26
ioforge_pci_device::status
uint16_t status
Definition
ioforge_pci.h:23
ioforge_pci_device::revision_id
uint8_t revision_id
Definition
ioforge_pci.h:27
ioforge_pci_device::interrupt_line
uint8_t interrupt_line
Definition
ioforge_pci.h:29
ioforge_pci_device::vendor_id
uint16_t vendor_id
Definition
ioforge_pci.h:20
ioforge_pci_device::interrupt_pin
uint8_t interrupt_pin
Definition
ioforge_pci.h:30
ioforge_pci_device::pci_dev
size_t pci_dev
Definition
ioforge_pci.h:17
ioforge_pci_device::min_grant
uint8_t min_grant
Definition
ioforge_pci.h:31
ioforge_pci_device::pci_bus
size_t pci_bus
Definition
ioforge_pci.h:18
ioforge_pci_device::header_type
uint8_t header_type
Definition
ioforge_pci.h:28
uint16_t
unsigned short uint16_t
Definition
type.h:13
boolean_t
uint8_t boolean_t
Definition
type.h:89
uintptr_t
unsigned long uintptr_t
Definition
type.h:73
uint64_t
unsigned long uint64_t
Definition
type.h:25
uint8_t
unsigned char uint8_t
Definition
type.h:7
vector
#define vector(T)
Definition
vector.h:11
include
ioforge
ioforge_pci.h
Generated on Sat May 30 2026 11:09:57 for Voxia OS by
1.13.2