Commit Graph
100 Commits
Author SHA1 Message Date
Bananymous 5cf3221364 Base: /lib and /bin are now absolute symlinks 2023-06-04 18:12:05 +03:00
Bananymous 40055f023c LibC: add wait and waitpid
Note that wait() doesn't work since only waiting for specified
pid is supported. wait() will just return -1 and set errno to
ECHILD.
2023-06-04 18:00:52 +03:00
Bananymous 9fbb2b9369 Kernel: Add SYS_WAIT
This syscall waits for a given pid.
2023-06-04 18:00:52 +03:00
Bananymous a3aca67eef Kernel: fork() now clones current thread
This is how posix specifies thread cloning during fork
2023-06-04 17:40:37 +03:00
Bananymous 977652ad57 Kernel: Process FixedWidthAllocators come now in 4 sizes 2023-06-04 01:26:43 +03:00
Bananymous 5bf7ca1c80 Kernel: Allocators are now stored in UniqPtr
This allows proper memory management, we had some memory leak
2023-06-04 01:25:57 +03:00
Bananymous 1b1f22c35e Kernel: make load_elf() its own function 2023-06-04 01:24:11 +03:00
Bananymous 479817231a Kernel: PhysicalRange maps its nodes to kernel vaddr space
This keeps the lower half of address space cleaner
2023-06-04 01:20:47 +03:00
Bananymous e3c5477df4 Kernel: reorder process exit steps 2023-06-04 01:19:04 +03:00
Bananymous b403155ca9 Kernel: You can specify first vaddr for getting free pages 2023-06-04 01:15:48 +03:00
Bananymous 9fd3111011 BAN: Add UniqPtr 2023-06-04 00:39:20 +03:00
Bananymous 5f339d585c Kernel: PAGE_FLAG_MASK is now only 0xF
We don't care currenly about anything but the last few bits
2023-06-03 20:08:13 +03:00
Bananymous b168462b43 Kernel: PageTable now has debug_dump
This dumps all the mapped pages and their flags
2023-06-03 20:08:13 +03:00
Bananymous 68691faca1 Kernel: boot.S is back to 2 MiB pages
bochs doesn't seem to support 1 GiB pages
2023-06-03 18:53:36 +03:00
Bananymous 1e075c248f BAN: Errors now includes assert.h 2023-06-03 18:53:05 +03:00
Bananymous d201e65810 BuildSystem: remove sse and sse2 from userspace 2023-06-03 16:05:32 +03:00
Bananymous 3a79880e69 LibC: printf string persision works now 2023-06-03 15:07:02 +03:00
Bananymous 9228df0f23 Kernel: Inode/Device detection is done with overridden bool functions 2023-06-03 13:28:15 +03:00
Bananymous 402ad85583 Kernel: Heap will return 0 if no free page is available 2023-06-03 02:55:31 +03:00
Bananymous 53e91ba98a Kernel: DiskCache will try to shrink_to_fit after cache cleanup 2023-06-03 02:55:22 +03:00
Bananymous fd153f3762 Kernel: DiskCache won't crash when running out of kmalloc memory 2023-06-03 02:36:20 +03:00
Bananymous 813d0f1b5f Kernel: add basic disk cache
ATADevices now add disk cache to themselves
2023-06-03 02:23:14 +03:00
Bananymous 2b901abfb1 Kernel: Shell 'memory' now prints heap memory usage 2023-06-03 02:22:18 +03:00
Bananymous d4289f9e74 Update README.md 2023-06-02 18:43:30 +03:00
Bananymous 3a5d6914ba Userspace: create_program creates proper cmake files again 2023-06-02 18:42:25 +03:00
Bananymous e96efea2fb BuildSystem: all scripts have now bash shebang
I could not use the scripts on debian
2023-06-02 18:41:45 +03:00
Bananymous 2df7f8a1e5 BuildSystem: add rule to build libstdc++
We can now build libstdc++ and actually link with g++
2023-06-02 18:39:42 +03:00
Bananymous 8645c4c653 Kernel: Shell ls and stat now properly show symlinks 2023-06-02 18:22:56 +03:00
Bananymous 88e92eec9e LibC: Add simple definition for realloc
The syscall just crashes the kernel currently. I will implement
this when needed
2023-06-02 17:56:13 +03:00
Bananymous a41b8e416f LibC: add __cxa_at_exit() for libc 2023-06-02 17:50:55 +03:00
Bananymous 8716c8baf4 LibC: remove select() declaration
This already comes from sys/select.h
2023-06-02 17:29:09 +03:00
Bananymous 2d67a7153b LibC: rename [[noreturn]] to __attribute__((__noreturn__))
This compiles with C compiler
2023-06-02 17:28:36 +03:00
Bananymous 3fcc7c6768 LibC: stdlib.h doesn't seem to typedef wchar_t without __need_wchar_t 2023-06-02 17:27:31 +03:00
Bananymous 5d2a062b36 LibC: fix INFINITY definition typo 2023-06-02 17:27:14 +03:00
Bananymous e517ff6b6d LibC: fix DIR typedef for C code 2023-06-02 17:26:38 +03:00
Bananymous 7296846a81 LibC: complex.h undefs I before defining it 2023-06-02 17:13:09 +03:00
Bananymous 6abcb0de9b LibC: mbstate_t is empty struct 2023-06-02 17:10:29 +03:00
Bananymous 40f9d9d9bc LibC: fix sig_atomic_t definition 2023-06-02 17:08:43 +03:00
Bananymous 7aea8c45f7 Kernel: VFS now has max link depth of 100 2023-06-02 12:50:40 +03:00
Bananymous 7bbdee6cc4 Kernel: Symlinks are now working
We still have to implement loop or depth detection
2023-06-02 11:43:46 +03:00
Bananymous efb3271588 BAN: Fix function call in Vector 2023-06-01 00:50:04 +03:00
Bananymous ff548bd898 Kernel: Shell can now list symlinks 2023-06-01 00:25:53 +03:00
Bananymous 835d32814d Kernel: add basic support for symlinks 2023-06-01 00:24:45 +03:00
Bananymous 79d1f665f2 Kernel: Shell opens standard files 2023-05-31 23:14:15 +03:00
Bananymous 9c818d3da0 BuildSystem: cmake creates /usr/bin 2023-05-31 23:13:53 +03:00
Bananymous a378e59432 BuildSystem: link libraries when they change
This also fixed the need for manual linkin on firt build
2023-05-31 23:01:40 +03:00
Bananymous a75a3f7a5f Userspace: make test program link against libc on change 2023-05-31 22:36:47 +03:00
Bananymous 0f412e570c LibC: add execl 2023-05-31 22:36:26 +03:00
Bananymous 1daa1f5611 Kernel: Cleanup exec code 2023-05-31 22:36:05 +03:00
Bananymous 24a190d1f7 Kernel: Add SYS_EXEC syscall 2023-05-31 20:57:33 +03:00
Bananymous b48b239882 Kernel: Implement Process::exec() 2023-05-31 20:56:29 +03:00
Bananymous 5fb69300ca Kernel: Move userspace entry functions to Process instead of Thread 2023-05-31 19:31:10 +03:00
Bananymous dcb23f686f Kernel: boot.S maps GiB as single pdpte 2023-05-31 00:51:15 +03:00
Bananymous 650570e57d Kernel: Fix comment 2023-05-31 00:51:15 +03:00
Bananymous 1f5a36f074 Kernel: PageTable destructor works now
we are successfully booting higher half kernel now :)
2023-05-31 00:44:14 +03:00
Bananymous aeaf2cd3f1 Kernel: PageTable::create_userspace() now works 2023-05-31 00:44:14 +03:00
Bananymous 959c0fc572 Kernel: kmalloc free error prints the pointer 2023-05-31 00:34:56 +03:00
Bananymous e3d3788f28 Kernel: RSDP location is now done with virtual addresses 2023-05-31 00:34:21 +03:00
Bananymous 850b7f27a2 Kernel: Physical range now calculates RAM with physical addresses 2023-05-31 00:33:44 +03:00
Bananymous 0939f23b04 Kernel: Heap gets multiboot pointer with P2V 2023-05-30 23:57:44 +03:00
Bananymous 67886b0c5a Kernel: Move V2P and P2V to Memory/Types.h 2023-05-30 23:57:03 +03:00
Bananymous 56eb6fb4ce Kernel: PageTable::map_range_at maps correctly the last page 2023-05-30 23:56:07 +03:00
Bananymous 81cf389754 Kernel: Booting with higher half kernel gets to Heap initialization 2023-05-30 22:21:12 +03:00
Bananymous 0907965dc5 Kernel: start work on higher half kernel 2023-05-30 08:00:17 +03:00
Bananymous 79315d318c Toolchain: lib gcc is wuild with mcmodel=large 2023-05-30 07:59:41 +03:00
Bananymous e8f820ef8d LibC: Fix some headers to make gcc build again 2023-05-30 01:17:45 +03:00
Bananymous 210d90ec79 Kernel: We now identity map full GiB in boot.S
The paging structure is pre-built so no unnecessary calculations are done
2023-05-30 00:08:52 +03:00
Bananymous 8bea18a6f2 Kernel: Remove unused includes of CriticalScope 2023-05-29 21:15:55 +03:00
Bananymous 861966eed6 Kernel: Remove unnecessary usages of PageTableScope
This should be used as few times as possible since it calls 'cli'
2023-05-29 21:11:29 +03:00
Bananymous 5bb1f2a48c Kernel: Rename MMU to PageTable
This is more descriptive name for what it actually represents
2023-05-29 21:06:09 +03:00
Bananymous fb17af4844 Kernel/LibC: opening standard files is done in libc 2023-05-29 20:21:19 +03:00
Bananymous 9a8512887f LibC: open() now just returns syscall(SYS_OPEN, ...)
errno is handled in syscall()
2023-05-29 20:19:17 +03:00
Bananymous b8ec8918b7 Kernel: We can't lock the MMU lock in load()
It needs to be callable always by scheduler
2023-05-29 19:39:35 +03:00
Bananymous ff83f967d8 Kernel: Make RecursiveSpinLock thread safe
also SpinLock is now implemented with gcc builtins
2023-05-29 19:38:09 +03:00
Bananymous 998999a755 Kernel: Add SYS_SLEEP 2023-05-28 22:34:48 +03:00
Bananymous 09666adc53 Kernel: fork() now copies allocations through FixedWidthAllocator 2023-05-28 21:34:35 +03:00
Bananymous ec73db0057 Kernel: Move page macros to Types.h 2023-05-28 21:03:08 +03:00
Bananymous 833642d405 Kernel: ISR will now crash userspace process instead of panicing kernel 2023-05-28 20:53:10 +03:00
Bananymous f04399c3a0 Kernel: fork() now copies allocation done through GeneralAllocator 2023-05-28 20:37:39 +03:00
Bananymous f2d767b799 Kernel: Add bareboness fork() function 2023-05-28 18:08:49 +03:00
Bananymous 3e93dae53c Kernel: Add invalidate() to MMU 2023-05-28 18:05:49 +03:00
Bananymous 187bb046aa Kernel: fix MMU::map_page_at()
We used to only reassign if flags changed
2023-05-28 17:57:05 +03:00
Bananymous dd4973ac35 LibC: fputs uses fputc instead of putc 2023-05-28 17:48:34 +03:00
Bananymous b021d3eebd Kernel: Processes and Threads use VirtualRange memory allocations 2023-05-28 17:48:34 +03:00
Bananymous 15842db83e Kernel: Move PhysicalRange to its own file and add VirtualRange 2023-05-28 17:48:34 +03:00
Bananymous 869de7283f Kernel: MMU::get() is now MMU::kernel
MMU is can now be locked with RecursiveSpinLock.

Scheduler now has get_current_tid() that works before the Scheduler
is initialized. This allows RecursiveSpinLock usage early on.
2023-05-28 16:18:18 +03:00
Bananymous a2ee543fa1 Shell: we now link BAN (we can't use it though) 2023-05-26 22:31:21 +03:00
Bananymous eb24d32383 Kernel: Directory listing is working again 2023-05-26 22:31:21 +03:00
Bananymous 565e3db22d Kernel: kmalloc debug_dump is marked [[maybe_unused]] 2023-05-26 22:31:21 +03:00
Bananymous faf14b880e LibC: Rewrite all the headers.
We now have more or less posix issue 2018 conforming libc headers.

This was a really time consuming and boring operation but it had to
be done.

Now we get to actually start implementing libc :)
2023-05-26 22:31:21 +03:00
Bananymous faa7bc6043 BAN: libban is now build into library dir 2023-05-26 22:31:21 +03:00
Bananymous 03c64b950b BAN: Errors.h can be included from userspace 2023-05-26 22:31:21 +03:00
Bananymous 27147790fd Userspace: Start work on shell 2023-05-26 22:31:21 +03:00
Bananymous 1658e925f2 Kernel: Add bareboness possibility to set termios 2023-05-26 22:31:21 +03:00
Bananymous 82dcec9576 Buildsystem: Fix userspace link order 2023-05-26 22:31:21 +03:00
Bananymous 80d9f6131b Kernel/LibC: move file offset back to kernel
This makes keeping track of offsets easier and more proper
2023-05-26 22:31:21 +03:00
Bananymous e0a72defa2 Kernel: Add argc and argv to process entry 2023-05-16 00:27:49 +03:00
Bananymous e0a7e242f8 Kernel: Add MMUScope
This disables interrupts and loads specified mmu for the
scope it lives in
2023-05-16 00:26:39 +03:00
Bananymous 6acb86c14b Kernel: MMU keeps track of the current 2023-05-16 00:26:39 +03:00
Bananymous 8ec675cca6 LibC: fix bugs with printf 2023-05-15 22:47:08 +03:00