PatchworkOS
Loading...
Searching...
No Matches
module.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <
kernel/acpi/devices.h
>
4
5
#include <
stdint.h
>
6
#include <
sys/io.h
>
7
#include <
sys/list.h
>
8
9
typedef
struct
module
module_t
;
10
23
typedef
enum
module_event_type
24
{
25
MODULE_EVENT_NONE
= 0,
26
MODULE_EVENT_LOAD
,
27
MODULE_EVENT_UNLOAD
,
28
}
module_event_type_t
;
29
36
typedef
struct
module_event
37
{
38
module_event_type_t
type
;
39
union
{
40
struct
41
{
42
const
char
*
hid
;
43
} load;
44
struct
45
{
46
const
char
* hid;
47
} unload;
48
};
49
}
module_event_t
;
50
55
typedef
struct
module
56
{
57
list_entry_t
entry
;
58
char
name[
MAX_NAME
];
59
void
*
baseAddress
;
60
uint64_t
size
;
61
void (*
procedure
)(
module_event_t
* event);
62
}
module_t
;
63
76
#define MODULE_ACPI_HIDS(...) \
77
static const char* _moduleAcpiHids __attribute__((section(".module_acpi_hids"), used)) = \
78
__VA_ARGS__
79
83
void
module_init
(
void
);
84
94
uint64_t
module_event
(
module_event_t
* event);
95
MAX_NAME
#define MAX_NAME
Maximum length of names.
Definition
MAX_NAME.h:11
devices.h
module_event_type_t
module_event_type_t
Module event types.
Definition
module.h:24
module_event
uint64_t module_event(module_event_t *event)
Propagates a module event to all registered modules.
Definition
module.c:13
module_init
void module_init(void)
Initializes the module system.
Definition
module.c:8
MODULE_EVENT_NONE
@ MODULE_EVENT_NONE
Definition
module.h:25
MODULE_EVENT_LOAD
@ MODULE_EVENT_LOAD
Definition
module.h:26
MODULE_EVENT_UNLOAD
@ MODULE_EVENT_UNLOAD
Definition
module.h:27
io.h
list.h
procedure
static uint64_t procedure(window_t *win, element_t *elem, const event_t *event)
Definition
main.c:46
stdint.h
uint64_t
__UINT64_TYPE__ uint64_t
Definition
stdint.h:17
list_entry_t
A entry in a doubly linked list.
Definition
list.h:38
module_event_t
Definition
module.h:37
module_event_t::hid
const char * hid
Definition
module.h:42
module_event_t::type
module_event_type_t type
Definition
module.h:38
module_t
Definition
module.h:56
module_t::size
uint64_t size
The size of the modules loaded image in memory.
Definition
module.h:60
module_t::baseAddress
void * baseAddress
The address where the modules image is loaded in memory.
Definition
module.h:59
module_t::entry
list_entry_t entry
Definition
module.h:57
include
kernel
module
module.h
Generated by
1.9.8