From a20e9d5a98438ea60e7170adc44e26d18d96e095 Mon Sep 17 00:00:00 2001 From: Aren Elchinyan Date: Thu, 12 Oct 2023 22:50:46 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9C=D0=B5=D0=BB=D0=BA=D0=B8=D0=B5=20=D0=B8?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 9 ++++--- API.md | 2 +- build.py | 2 +- include/version.h | 2 +- kernel/start.cpp | 13 ++++----- kernel/sys.cpp | 69 +++++++++++++++++++++++++++++++++++++++++++++++ kernel/task.cpp | 0 7 files changed, 82 insertions(+), 15 deletions(-) create mode 100644 kernel/task.cpp diff --git a/.gitignore b/.gitignore index 44423cc..f11f210 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,11 @@ kernel.elf -mseos.hdd -mseos.iso +bmosp.hdd +bmosp.iso *.0 bin/ limine/ ovmf/ -modules/helloworld/helloworld.elf -modules/com/com.elf +iso_root/ +modules/helloworld/helloworld.elf +modules/com/com.elf diff --git a/API.md b/API.md index ea9fbcd..a7ff10d 100644 --- a/API.md +++ b/API.md @@ -47,7 +47,7 @@ ## sys::get_info() -Получает информацию о текущей системе. Возвращает структуру `sys::info_t` содержащую информацию о системе. +Получает информацию о текущей системе. Возвращает структуру `sys_info_t` содержащую информацию о системе. ## sys::get_module(uid_t module_id) diff --git a/build.py b/build.py index 2026728..3b26349 100644 --- a/build.py +++ b/build.py @@ -158,9 +158,9 @@ if __name__ == "__main__": check_limine() check_tools() + major, minor, build = version_build() compile_all() create_iso("bmosp") create_hdd("bmosp") - major, minor, build = version_build() print(f"Не забудьте сохранить изменения! Номер сборки: {major}.{minor}, {build}") \ No newline at end of file diff --git a/include/version.h b/include/version.h index ff6a4b1..aeb37da 100644 --- a/include/version.h +++ b/include/version.h @@ -1,3 +1,3 @@ #define VERSION_MAJOR 0 #define VERSION_MINOR 1 -#define VERSION_BUILD 2 +#define VERSION_BUILD 17 diff --git a/kernel/start.cpp b/kernel/start.cpp index 4ecb86b..452e53a 100644 --- a/kernel/start.cpp +++ b/kernel/start.cpp @@ -9,10 +9,10 @@ extern "C" void main( ); -void pause( ) { +static inline void pause( ) { for (uint64_t i = 0; i < 1024; i++) { for (uint64_t j = 0; j < 1024; j++) { - // for (uint64_t q = 0; q < 1; q++) { asm volatile("pause"); } + for (uint64_t q = 0; q < 1; q++) { asm volatile("pause"); } } } } @@ -22,17 +22,14 @@ extern "C" void _start( ) { asm volatile("cli"); fb::init( ); - pause( ); arch::init( ); - pause( ); cpu::init( ); - pause( ); mem::init( ); - fb::printf("\t\t\t\t *** БМПОС %u.%u.%u.%u ***\n", VERSION_MAJOR, - VERSION_MINOR, VERSION_BUILD); + fb::printf("\t\t\t\t *** Базовая Модульная Платформа Операционных Систем " + "версии %u.%u, %u ***\n", + VERSION_MAJOR, VERSION_MINOR, VERSION_BUILD); fb::printf("\t\t\t\t *** Дата сборки: %s %s ***\n", __DATE__, __TIME__); mod::init( ); - pause( ); asm volatile("int $0"); diff --git a/kernel/sys.cpp b/kernel/sys.cpp index e69de29..7925c6d 100644 --- a/kernel/sys.cpp +++ b/kernel/sys.cpp @@ -0,0 +1,69 @@ +#include + +typedef struct { + int reserved; +} framebuffer_t; + +typedef struct { + int reserved; +} sys_info_t; + +typedef struct { + int reserved; +} module_info_t; + +typedef struct { + int reserved; +} func_t; + +typedef struct { + uint8_t a[4]; + uint8_t b[4]; + uint8_t c[4]; + uint8_t d[4]; +} uid_t; + +typedef struct { + uint16_t year; + uint8_t month; + uint8_t day; + uint8_t second; +} time_t; + +namespace sys { +void init( ) {} + +framebuffer_t *alloc_framebuffer( ) { + return (framebuffer_t *)0; +} + +void free_framebuffer(framebuffer_t *frame) {} + +void exit(int code) {} + +int get_error( ) { + return 0; +} + +sys_info_t *get_info( ) { + return (sys_info_t *)0; +} + +module_info_t *get_module(uid_t module_id) { + return (module_info_t *)0; +} + +uid_t new_thread(func_t func) { + return { 0, 0, 0, 0 }; +} + +int delete_thread(uid_t thread_id) { + return 0; +} + +time_t get_time( ) { + return { 0, 0, 0, 0 }; +} + +void set_alarm(time_t time, func_t func) {} +} // namespace sys diff --git a/kernel/task.cpp b/kernel/task.cpp new file mode 100644 index 0000000..e69de29