From 0fbaf6d26e3fcb59b536357f3e45b75c1c3d6434 Mon Sep 17 00:00:00 2001 From: xamidev Date: Thu, 26 Mar 2026 17:59:02 +0100 Subject: [PATCH] Date functions (get current time) --- include/config.h | 2 +- include/kernel.h | 2 + include/mem/utils.h | 1 + include/time/date.h | 25 +++++++++++++ src/boot/boot.c | 6 +++ src/kapps/kshell.c | 16 +++++++- src/kmain.c | 4 ++ src/time/date.c | 89 +++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 142 insertions(+), 3 deletions(-) create mode 100644 include/time/date.h create mode 100644 src/time/date.c diff --git a/include/config.h b/include/config.h index d553854..f557563 100644 --- a/include/config.h +++ b/include/config.h @@ -10,7 +10,7 @@ /* version */ #define PEPPEROS_VERSION_MAJOR "0" #define PEPPEROS_VERSION_MINOR "0" -#define PEPPEROS_VERSION_PATCH "58" +#define PEPPEROS_VERSION_PATCH "109" #define PEPPEROS_SPLASH \ "\x1b[38;5;196m \x1b[38;5;231m____ _____\r\n\x1b[0m"\ "\x1b[38;5;196m ____ ___ ____ ____ ___ _____\x1b[38;5;231m/ __ \\/ ___/\r\n\x1b[0m"\ diff --git a/include/kernel.h b/include/kernel.h index 116ba09..04836ca 100644 --- a/include/kernel.h +++ b/include/kernel.h @@ -7,6 +7,7 @@ #ifndef KERNEL_H #define KERNEL_H +#include "limine.h" enum ErrorCodes { ENOMEM, EIO @@ -52,6 +53,7 @@ struct boot_context { struct limine_memmap_response* mmap; struct limine_hhdm_response* hhdm; struct limine_kernel_address_response* kaddr; + struct limine_boot_time_response* bootdate; }; // Are these modules initialized yet? diff --git a/include/mem/utils.h b/include/mem/utils.h index 197bf12..e3162e4 100644 --- a/include/mem/utils.h +++ b/include/mem/utils.h @@ -8,6 +8,7 @@ #define MEM_UTILS_H #include +#include void* memcpy(void* restrict dest, const void* restrict src, size_t n); void* memset(void* s, int c, size_t n); diff --git a/include/time/date.h b/include/time/date.h new file mode 100644 index 0000000..f3bf2a6 --- /dev/null +++ b/include/time/date.h @@ -0,0 +1,25 @@ +/* + * @author xamidev + * @brief Date helper functions + * @license GPL-3.0-only + */ + +#ifndef DATE_H +#define DATE_H + +#include + +struct date { + uint64_t year; + uint8_t month; + uint8_t day; + + uint8_t hour; + uint8_t minute; + uint8_t second; +}; + +struct date date_timestamp_to_date(uint64_t timestamp); +struct date date_now(); + +#endif \ No newline at end of file diff --git a/src/boot/boot.c b/src/boot/boot.c index 966f202..73d1324 100644 --- a/src/boot/boot.c +++ b/src/boot/boot.c @@ -35,6 +35,12 @@ volatile struct limine_kernel_address_request kerneladdr_request = { .revision = 0 }; +__attribute__((used, section(".limine_requests"))) +volatile struct limine_boot_time_request date_request = { + .id = LIMINE_BOOT_TIME_REQUEST, + .revision = 0 +}; + __attribute__((used, section(".limine_requests_start"))) volatile LIMINE_REQUESTS_START_MARKER; diff --git a/src/kapps/kshell.c b/src/kapps/kshell.c index b1c77f1..eaef7ed 100644 --- a/src/kapps/kshell.c +++ b/src/kapps/kshell.c @@ -10,6 +10,7 @@ #include #include #include +#include