801025ad7b
Kernel: Big commit. Rewrite ELF loading code
...
We now load ELF files to VirtualRanges instead of using kmalloc.
We have only a fixed 1 MiB kmalloc for big allocations and this
allows loading files even when they don't fit in there.
This caused me to rewrite the whole ELF loading process since the
loaded ELF is not in memory mapped by every process.
Virtual ranges allow you to zero out the memory and to copy into
them from arbitary byte buffers.
2023-06-09 00:37:43 +03:00
59b10c4d25
Kernel: PageTableScope locks the PageTable before disabling interrupts
...
This allows replacing some PageTableScopes with PageTable::lock()
2023-06-09 00:34:41 +03:00
841584ccbd
Kernel: get_free_contiguous_pages works with non-page aligned addresses
...
also fix bug in ordering
2023-06-06 02:03:23 +03:00
24993f6020
LibC: implement setenv, unsetenv, putenv
2023-06-05 22:51:02 +03:00
55ea5c5488
Kernel: add basic support for environment variables
...
exec functions will search files from PATH
2023-06-05 22:51:02 +03:00
c6b5cc1e07
Kernel: exec now has better posix errors
2023-06-05 21:12:08 +03:00
896b919c9d
Kernel/LibC: pass environ pointer to process
2023-06-05 21:12:08 +03:00
6b73f4d187
Kernel: TTY now actually flushes on ^D
2023-06-05 20:21:46 +03:00
08a806e75d
Kernel: verify that loaded elfs are executable
2023-06-05 19:29:32 +03:00
cf88142856
Kernel: TTY now supports CSI s and u
...
These are commonly supported values to save and load cursor
position
2023-06-05 18:19:13 +03:00
d1ad38c8d4
Kernel/LibC: add SYS_STAT and stat(), lstat()
2023-06-05 14:37:14 +03:00
9fbb2b9369
Kernel: Add SYS_WAIT
...
This syscall waits for a given pid.
2023-06-04 18:00:52 +03:00
a3aca67eef
Kernel: fork() now clones current thread
...
This is how posix specifies thread cloning during fork
2023-06-04 17:40:37 +03:00
977652ad57
Kernel: Process FixedWidthAllocators come now in 4 sizes
2023-06-04 01:26:43 +03:00
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
1b1f22c35e
Kernel: make load_elf() its own function
2023-06-04 01:24:11 +03:00
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
e3c5477df4
Kernel: reorder process exit steps
2023-06-04 01:19:04 +03:00
b403155ca9
Kernel: You can specify first vaddr for getting free pages
2023-06-04 01:15:48 +03:00
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
b168462b43
Kernel: PageTable now has debug_dump
...
This dumps all the mapped pages and their flags
2023-06-03 20:08:13 +03:00
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
9228df0f23
Kernel: Inode/Device detection is done with overridden bool functions
2023-06-03 13:28:15 +03:00
402ad85583
Kernel: Heap will return 0 if no free page is available
2023-06-03 02:55:31 +03:00
53e91ba98a
Kernel: DiskCache will try to shrink_to_fit after cache cleanup
2023-06-03 02:55:22 +03:00
fd153f3762
Kernel: DiskCache won't crash when running out of kmalloc memory
2023-06-03 02:36:20 +03:00
813d0f1b5f
Kernel: add basic disk cache
...
ATADevices now add disk cache to themselves
2023-06-03 02:23:14 +03:00
2b901abfb1
Kernel: Shell 'memory' now prints heap memory usage
2023-06-03 02:22:18 +03:00
8645c4c653
Kernel: Shell ls and stat now properly show symlinks
2023-06-02 18:22:56 +03:00
7aea8c45f7
Kernel: VFS now has max link depth of 100
2023-06-02 12:50:40 +03:00
7bbdee6cc4
Kernel: Symlinks are now working
...
We still have to implement loop or depth detection
2023-06-02 11:43:46 +03:00
ff548bd898
Kernel: Shell can now list symlinks
2023-06-01 00:25:53 +03:00
835d32814d
Kernel: add basic support for symlinks
2023-06-01 00:24:45 +03:00
79d1f665f2
Kernel: Shell opens standard files
2023-05-31 23:14:15 +03:00
1daa1f5611
Kernel: Cleanup exec code
2023-05-31 22:36:05 +03:00
24a190d1f7
Kernel: Add SYS_EXEC syscall
2023-05-31 20:57:33 +03:00
b48b239882
Kernel: Implement Process::exec()
2023-05-31 20:56:29 +03:00
5fb69300ca
Kernel: Move userspace entry functions to Process instead of Thread
2023-05-31 19:31:10 +03:00
dcb23f686f
Kernel: boot.S maps GiB as single pdpte
2023-05-31 00:51:15 +03:00
650570e57d
Kernel: Fix comment
2023-05-31 00:51:15 +03:00
1f5a36f074
Kernel: PageTable destructor works now
...
we are successfully booting higher half kernel now :)
2023-05-31 00:44:14 +03:00
aeaf2cd3f1
Kernel: PageTable::create_userspace() now works
2023-05-31 00:44:14 +03:00
959c0fc572
Kernel: kmalloc free error prints the pointer
2023-05-31 00:34:56 +03:00
e3d3788f28
Kernel: RSDP location is now done with virtual addresses
2023-05-31 00:34:21 +03:00
850b7f27a2
Kernel: Physical range now calculates RAM with physical addresses
2023-05-31 00:33:44 +03:00
0939f23b04
Kernel: Heap gets multiboot pointer with P2V
2023-05-30 23:57:44 +03:00
67886b0c5a
Kernel: Move V2P and P2V to Memory/Types.h
2023-05-30 23:57:03 +03:00
56eb6fb4ce
Kernel: PageTable::map_range_at maps correctly the last page
2023-05-30 23:56:07 +03:00
81cf389754
Kernel: Booting with higher half kernel gets to Heap initialization
2023-05-30 22:21:12 +03:00
0907965dc5
Kernel: start work on higher half kernel
2023-05-30 08:00:17 +03:00