Commit Graph

71 Commits

Author SHA1 Message Date
Karina d42fc79c25 WIP: Rust std for termos's userspace 2026-04-15 14:44:10 +04:00
Karina b44e1924ed wip: experimental rust support in runtime 2026-04-13 23:40:41 +04:00
Karina 4909e40cb1 docs: readme update again 2026-04-04 19:47:30 +04:00
Karina 7102edfa5a docs: readme update 2026-04-04 19:47:18 +04:00
Karina 47735bb1bd REF: Renamed kernel -> System; userspace -> Runtime; bootloader -> Boot
del: KSH
2026-04-04 19:44:39 +04:00
Karina 2f58f64175 feat(libkern): strrchr (StringFindLastOccurenceOfCharacter)
fix(OSServiceProcessSpawn): now it uses strrchr to get process name
2026-02-01 21:02:54 +04:00
Karina 4e10985909 ref(KSH): Renamed files and folder 2026-02-01 00:39:18 +04:00
Karina c72dbc763c chore(CPIO): changed panic text 2026-02-01 00:28:19 +04:00
Karina 02b36283a5 ref(libkern): changed to match libterm 2026-02-01 00:26:22 +04:00
Karina e21f5ef52f ref(libterm): now apple-styled too 2026-01-31 22:47:42 +04:00
Karina 2be7d3bd46 fix(scheduler): garbage collector now wakes up on process terminate
fix(scheduler/spawn): now its doesnt OSPanic's when VMHeapAllocate returned nullptr for stackBaseAddress. It wakes up GC, tries again and if it failed return nullptr
2026-01-31 21:28:02 +04:00
Karina 02dc35f0df feat(core): implement spinlocks, GC and keyboard safety
* Implemented Spinlocks and applied to VM/Scheduler

* Added Garbage Collector for tasks

* Moved Getchar to IOKeyboard with locking

* Cleanup panic messages
2026-01-31 20:50:27 +04:00
Karina ee67cef4f8 ref: initramfs -> StartupVolume; /bin -> /System/CoreServices;
ref(Kernel/VM/Heap): malloc -> VMHeapAllocate; free -> VMHeapFree; realloc -> VMHeapResize
2026-01-31 16:11:45 +04:00
Karina c30d57d06e fix(ksh/regs): now it doesnt panic when typing regs in ksh
fix(kmain): Now Dewar correctly OSPanic()'s instead of returnin IOConsoleLog when no framebuffer found
2026-01-31 02:49:34 +04:00
Karina 4e6794a6c2 chore: update copyrights 2026-01-31 01:57:28 +04:00
Karina e63983c95d full refactor in kernel/: now its apple-styled; im so fucking tired v0.6.0 2026-01-31 01:40:10 +04:00
Karina e323e91dac chore(libterm/stdio): printf reworked, vsnprintf() and snprintf() 2026-01-30 20:22:45 +04:00
Karina 52d0bfeaae chore(cpio): moved initramfs binary files to /bin/* 2026-01-30 17:25:01 +04:00
Karina ae7e1a91d0 fix(syscall/proc): i32 in sys_exit and sys_spawn
fix(userspace/string.h): gets_s now correctly work with \b

chore(kmain): now ring3 is default when pressing any key (instead of ksh)

feat(termosh): spawn in termosh
2026-01-30 10:19:05 +04:00
Karina c5741374cd fix(syscalls/proc): sys_exit and sys_wait now returns code and pid respectively 2026-01-30 08:20:05 +04:00
Karina 385b7d7a13 wip(termosh); strspn strpbrk and strtok in string.h; 2026-01-30 08:10:08 +04:00
Karina 3f95b6d282 chore(ksh): disabled 'userspace' command due to be really broken 2026-01-30 07:20:01 +04:00
Karina 92aaa47435 docs: roadmap update 2026-01-30 07:16:24 +04:00
Karina caf2d2b4a8 v0.5.3: syscalls, minilibc.
- fix(gs): was a nightmare. now its solved. Both MSR_GS_BASE and MSR_KERNEL_GS_BASE are now initialized to , preventing null GS_BASE when interrupt occurs during the first kernel task run
- chore(syscall.asm): stability improvements. User RSP is now saved via kernel stack instead of global g_cpu, preventing stack theft when task switch occurs during a syscall
- feat(interrupts): all irq and isr handlers now conditionally perform swapgs based on the CS selector (checkin if comfing from ring 3)
- upgrade(scheduler): big update: 1) added TASK_BLOCKED state from process sync; 2) syncronized PID and Task ID to fix wakeup logic; 3) implemented sched_block and sched_exit() for proper wait/exit syscalls
v0.5.3
2026-01-30 07:12:57 +04:00
Karina 888bc5abdd v0.5.3-pre: refactor syscall handlers and introduce libterm
Moved handlers to syscalls/, implemented libterm (malloc, stdio)
v0.5.3-pre
2026-01-30 04:58:43 +04:00
Karina 9c103218d0 docs: readme and roadmap 2026-01-30 00:52:43 +04:00
Karina 21270a3cc8 feat: introduce HOT! executable format and Ring 3 process isolation (v0.5.2)
- Implement custom 'HOT!' binary format and Rust-based elf2hot converter.
- Upgrade kernel loader with segment-based loading and BSS zeroing.
- Refactor scheduler for Ring 3 IRET frames and fix CS/SS selector swap.
- Add user stack allocation (0x70000000) and linker scripts for binary cleanup.
v0.5.2
2026-01-30 00:12:11 +04:00
Karina 7d32444da2 feat(core): v0.5.1 - process isolation and syscalls
- Implemented CR3 switching in scheduler for process isolation

- Added 'process' structure and PML4 cloning (vmm_create_address_space)

- Added NASM crt0 and C entry point for userspace apps
v0.5.1
2026-01-29 22:28:41 +04:00
Karina 55ea8fc533 feat(userspace): userspace support
build: updated CMakeLists to build and copy to initramfs

wip(syscalls): initial syscalls

chore(ksh/kfetch): minor changes

chore(gitignore): added initramfs/*
v0.5.0
2026-01-29 21:25:45 +04:00
Karina 3f3a026432 build: officially naming the kernel "Dewar" and updating kfetch 2026-01-29 05:29:39 +04:00
Karina 8a6994ebd8 build(cmake): added TERMOS_VERSION defenition
fix(kfetch): added correct versioning in kfetch
2026-01-29 05:03:46 +04:00
Karina 3525c81d9e fix(linker): _start is now always first in binary
feat(rand): real random using rdrand/xorshift

chore(panic): added 2 more fun_messages

feat(ksh): removed rectest and added rand command

wip(ksh/kfetch): now it shows vendor string instead of stub
2026-01-29 04:44:25 +04:00
Karina d01a91c993 feat: jumping to userspace (currently only in dbg command with infinit jmp to self loop v0.4.9 2026-01-29 01:10:14 +04:00
Karina ae27f28d04 feat: basic vfs v0.4.8 2026-01-28 06:29:41 +04:00
Karina 0761153d24 feat: implement initial CPIO parsing and shell improvements
- core: added CPIO parser (fs/cpio.c) and VFS structs

- shell: refactored ksh, added 'help' command

- lib: added string utils (strcpy, strncpy, strncmp)

- wip: working on initramfs loading in kmain
2026-01-28 02:04:40 +04:00
Karina 26c0353554 feat: blinking cursor
minor changes while trying to remember what i even wrote here after month break
2026-01-24 19:26:12 +04:00
Karina 358061cd6c feat: basic scheduler; basic composer 2025-12-30 23:53:59 +04:00
Karina 9a296e4045 ref: changed ifndef -> pragma 2025-12-30 21:28:29 +04:00
Karina db9b7cdbd5 feat: heap, dbg command (currently heap test there) 2025-12-29 08:41:51 +04:00
Karina 6bfce3c866 wip: timer. sending to pc 2025-12-29 06:24:58 +04:00
Karina 0ac17ad472 feat: HHDM 2025-12-28 20:03:35 +04:00
Karina 894c513609 minor refactor; cats in ksh 2025-12-28 07:36:04 +04:00
Karina 0cf509856e im honestly dont remember 2025-12-28 04:31:59 +04:00
Karina caf4f7a055 feat: basic ksh 2025-12-28 01:47:17 +04:00
Karina 45fcf8e834 fix: backspace 2025-12-28 00:32:52 +04:00
Karina d0d025dd90 feat: kgets() 2025-12-28 00:10:18 +04:00
Karina 794dae7084 Refactor: Modular kernel structure & WIP keyboard driver
- Reorganized src/inc into arch, drivers, core, shell
- Updated CMakeLists.txt for multi-arch support
- Added basic scancode-to-ASCII mapping (US QWERTY)
- Initial KSH (Kernel Shell) skeleton
- WIP: Keyboard modifier handling
2025-12-27 22:10:24 +04:00
Karina e644bc5577 feat: irq interrupts; basic kb driver 2025-12-27 20:54:19 +04:00
Karina 664bf2e869 License; WIP: PIC 2025-12-27 17:54:34 +04:00
Karina 18b3e9cbe7 wip: pic. sending to continue on main pc 2025-12-27 17:09:14 +04:00