Skip to content
This repository was archived by the owner on Jan 4, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ add_custom_target(extra-img
COMMAND ${QEMU_IMG} create -f raw VirtioDisk.img 128M
COMMAND ${MKFS_EXT2} VirtioDisk.img
COMMAND ${QEMU_IMG} create -f raw SataDisk.img 128M
COMMAND ${MKFS_FAT} -F12 SataDisk.img
COMMAND ${MKFS_EXT2} SataDisk.img
COMMAND ${QEMU_IMG} create -f raw NVMeDisk.img 256M
COMMAND ${MKFS_EXT2} NVMeDisk.img
COMMENT "Creating extra disk images"
Expand Down
5 changes: 5 additions & 0 deletions drivers/ACPI.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#include "Console.h"
#include "Io.h"
#include "MemOps.h"
#include "NVMe.h"
#include "Scheduler.h"
#include "StringOps.h"
#include "VMem.h"
Expand Down Expand Up @@ -153,6 +154,10 @@ void ACPIResetProcedure() {
PrintKernel("ACPI: Stopping all processes and services...\n");
KillAllProcess("SHUTDOWN");
PrintKernelSuccess("ACPI: All processes and services stopped\n");

PrintKernel("ACPI: Stopping NVMe driver...\n");
NVMe_Shutdown();
PrintKernelSuccess("ACPI: NVMe driver stopped\n");
}

void ACPIShutdown(void) {
Expand Down
3 changes: 2 additions & 1 deletion drivers/ACPI.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,4 +83,5 @@ typedef struct {
bool ACPIInit(void);
void ACPIShutdown(void);
void ACPIReboot(void);
void* AcpiFindTable(const char* signature);
void* AcpiFindTable(const char* signature);
void ACPIResetProcedure(void);
5 changes: 5 additions & 0 deletions drivers/TSC.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ void TSCInit(void) {
PrintKernelF("TSC: Calibrated frequency: %llu Hz\n", tsc_freq_hz);
}

uint64_t GetTimeInMs(void) {
if (!tsc_calibrated) return 0;
return (rdtsc() * 1000) / tsc_freq_hz;
}

void delay_us(uint32_t microseconds) {
if (!tsc_calibrated) return;

Expand Down
1 change: 1 addition & 0 deletions drivers/TSC.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

void TSCInit(void);

uint64_t GetTimeInMs(void);
void delay_us(uint32_t microseconds);
void delay(uint32_t milliseconds);
void delay_s(uint32_t seconds);
Expand Down
Loading