mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-11-01 15:08:21 +00:00
kernel: rework init
This commit is contained in:
@@ -7,12 +7,15 @@
|
||||
#include <uacpi/event.h>
|
||||
#include <kernel/acpi.h>
|
||||
#include <kernel/interrupt.h>
|
||||
#include <kernel/init.h>
|
||||
#include <logging.h>
|
||||
|
||||
void acpi_early_init(void) {
|
||||
__assert(uacpi_initialize(0) == UACPI_STATUS_OK);
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(acpi_early, INIT_ROUTINE_FLAGS_NONE, acpi_early_init, alloc);
|
||||
|
||||
void acpi_dopoweroff(uacpi_handle ctx) {
|
||||
(void)ctx;
|
||||
acpi_signaldevice('p');
|
||||
@@ -37,6 +40,8 @@ void acpi_init(void) {
|
||||
uacpi_install_fixed_event_handler(UACPI_FIXED_EVENT_POWER_BUTTON, handle_pwrbtn, UACPI_NULL);
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(acpi, INIT_ROUTINE_FLAGS_NONE, acpi_init, pci, devfs, scheduler);
|
||||
|
||||
int acpi_poweroff(void) {
|
||||
uacpi_status ret = uacpi_prepare_for_sleep_state(UACPI_SLEEP_STATE_S5);
|
||||
if (uacpi_unlikely_error(ret)) {
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <arch/cpu.h>
|
||||
#include <errno.h>
|
||||
#include <kernel/block.h>
|
||||
#include <kernel/init.h>
|
||||
|
||||
#define CC_ENABLE(cc) cc = (cc) | 1
|
||||
#define CC_DISABLE(cc) cc = (cc) & ~1
|
||||
@@ -788,3 +789,5 @@ void nvme_init() {
|
||||
initcontroller(e);
|
||||
}
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(nvme, INIT_ROUTINE_FLAGS_NONE, nvme_init, acpi);
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <termios.h>
|
||||
#include <kernel/poll.h>
|
||||
#include <kernel/tty.h>
|
||||
#include <kernel/init.h>
|
||||
|
||||
static mutex_t writemutex;
|
||||
static thread_t *thread;
|
||||
@@ -124,3 +125,5 @@ void console_init() {
|
||||
tty->winsize.ws_xpixel = fbx;
|
||||
tty->winsize.ws_ypixel = fby;
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(console, INIT_ROUTINE_FLAGS_NONE, console_init, scheduler, keyboard);
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <arch/cpu.h>
|
||||
#include <kernel/pmm.h>
|
||||
#include <kernel/usercopy.h>
|
||||
#include <kernel/init.h>
|
||||
|
||||
typedef struct bitfield_t {
|
||||
uint32_t offset;
|
||||
@@ -256,3 +257,5 @@ void fb_init() {
|
||||
printf("%s: %dx%d %d bpp\n", name, fb->width, fb->height, fb->bpp);
|
||||
}
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(fb, INIT_ROUTINE_FLAGS_NONE, fb_init, devfs);
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include <hashtable.h>
|
||||
#include <kernel/poll.h>
|
||||
#include <kernel/usercopy.h>
|
||||
#include <kernel/init.h>
|
||||
|
||||
#define BUFFER_PACKET_CAPACITY 100
|
||||
#define BUFFER_SIZE (BUFFER_PACKET_CAPACITY * sizeof(kbpacket_t))
|
||||
@@ -252,3 +253,5 @@ void keyboard_init() {
|
||||
__assert(keyboard_console);
|
||||
__assert(hashtable_init(&kbtable, 20) == 0);
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(keyboard, INIT_ROUTINE_FLAGS_NONE, keyboard_init, bsp_early);
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <kernel/eth.h>
|
||||
#include <ringbuffer.h>
|
||||
#include <kernel/event.h>
|
||||
#include <kernel/init.h>
|
||||
|
||||
#define CACHE_TIMEOUT_SEC 300
|
||||
#define CACHE_TIMEOUT_MS (CACHE_TIMEOUT_SEC * 1000)
|
||||
@@ -315,3 +316,5 @@ void arp_init() {
|
||||
sched_queue(handlerthread);
|
||||
sched_queue(cleanupthread);
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(arp, INIT_ROUTINE_FLAGS_NONE, arp_init, scheduler);
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <mutex.h>
|
||||
#include <kernel/alloc.h>
|
||||
#include <kernel/abi.h>
|
||||
#include <kernel/init.h>
|
||||
|
||||
typedef struct {
|
||||
netdev_t *netdev;
|
||||
@@ -229,3 +230,5 @@ void ipv4_init() {
|
||||
__assert(routingtable);
|
||||
__assert(ipv4_addroute(loopback_device(), 0x7f000001, 0, 0xff000000, 10000) == 0);
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(ipv4, INIT_ROUTINE_FLAGS_NONE, ipv4_init, devfs)
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <kernel/net.h>
|
||||
#include <hashtable.h>
|
||||
#include <arch/cpu.h>
|
||||
#include <kernel/init.h>
|
||||
|
||||
static netdev_t loopbacknetdev;
|
||||
|
||||
@@ -64,3 +65,5 @@ void loopback_init() {
|
||||
|
||||
__assert(netdev_register(&loopbacknetdev, "lo") == 0);
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(loopback, INIT_ROUTINE_FLAGS_NONE, loopback_init, devfs);
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <kernel/timekeeper.h>
|
||||
#include <kernel/interrupt.h>
|
||||
#include <kernel/auth.h>
|
||||
#include <kernel/init.h>
|
||||
|
||||
#define WORKER_COUNT 12
|
||||
#define WORKER_BUFFER_SIZE (64 * 1024)
|
||||
@@ -1879,3 +1880,5 @@ void tcp_init() {
|
||||
sched_queue(thread);
|
||||
}
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(tcp, INIT_ROUTINE_FLAGS_NONE, tcp_init, ipv4, scheduler);
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include <kernel/pci.h>
|
||||
#include <kernel/alloc.h>
|
||||
#include <kernel/vmm.h>
|
||||
#include <kernel/init.h>
|
||||
|
||||
uint8_t pci_read8(int bus, int device, int function, uint32_t offset) {
|
||||
return (pci_archread32(bus, device, function, offset) >> ((offset & 0b11) * 8)) & 0xff;
|
||||
@@ -279,3 +280,5 @@ void pci_init() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(pci, INIT_ROUTINE_FLAGS_NONE, pci_init, scheduler);
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include <string.h>
|
||||
#include <logging.h>
|
||||
#include <kernel/timekeeper.h>
|
||||
#include <kernel/init.h>
|
||||
|
||||
static int null_write(int minor, iovec_iterator_t *iovec_iterator, size_t count, uintmax_t offset, int flags, size_t *wcount) {
|
||||
*wcount = count;
|
||||
@@ -77,3 +78,5 @@ void pseudodevices_init() {
|
||||
__assert(devfs_register(&zeroops, "zero", V_TYPE_CHDEV, DEV_MAJOR_ZERO, 0, 0666, NULL) == 0);
|
||||
__assert(devfs_register(&urandomops, "urandom", V_TYPE_CHDEV, DEV_MAJOR_URANDOM, 0, 0666, NULL) == 0);
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(pseudo_devices, INIT_ROUTINE_FLAGS_NONE, pseudodevices_init, devfs);
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <logging.h>
|
||||
#include <kernel/alloc.h>
|
||||
#include <kernel/usercopy.h>
|
||||
#include <kernel/init.h>
|
||||
|
||||
#define PTY_BUFFER 4096
|
||||
#define PTY_MAX 1024
|
||||
@@ -285,3 +286,5 @@ void pty_init() {
|
||||
__assert(devfs_createdir("pts") == 0);
|
||||
SPINLOCK_INIT(listlock);
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(pty, INIT_ROUTINE_FLAGS_NONE, pty_init, tty);
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <string.h>
|
||||
#include <kernel/pmm.h>
|
||||
#include <arch/mmu.h>
|
||||
#include <kernel/init.h>
|
||||
|
||||
extern volatile struct limine_framebuffer_request fb_liminereq;
|
||||
static size_t xs, ys, fbxs, fbys;
|
||||
@@ -66,3 +67,5 @@ void term_init() {
|
||||
|
||||
MUTEX_INIT(&term_mutex);
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(term, INIT_ROUTINE_FLAGS_NONE, term_init, pmm);
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <kernel/alloc.h>
|
||||
#include <kernel/jobctl.h>
|
||||
#include <kernel/usercopy.h>
|
||||
#include <kernel/init.h>
|
||||
|
||||
#define TTY_MAX_COUNT 4096
|
||||
#define CONTROLLING_TTY_MINOR TTY_MAX_COUNT
|
||||
@@ -552,3 +553,5 @@ void tty_init() {
|
||||
__assert(devfs_register(&devops, "tty", V_TYPE_CHDEV, DEV_MAJOR_TTY, CONTROLLING_TTY_MINOR, 0666, NULL) == 0);
|
||||
MUTEX_INIT(&listmutex);
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(tty, INIT_ROUTINE_FLAGS_NONE, tty_init, devfs);
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include <logging.h>
|
||||
#include <kernel/alloc.h>
|
||||
#include <kernel/pmm.h>
|
||||
#include <kernel/init.h>
|
||||
|
||||
#define VIRTIO_VENDOR 0x1af4
|
||||
#define VIRTIO_DEVICE_MIN 0x1000
|
||||
@@ -176,3 +177,5 @@ void virtio_init() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(virtio, INIT_ROUTINE_FLAGS_NONE, virtio_init, acpi);
|
||||
|
||||
Reference in New Issue
Block a user