Bananymous
|
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 |
|
Bananymous
|
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 |
|
Bananymous
|
24993f6020
|
LibC: implement setenv, unsetenv, putenv
|
2023-06-05 22:51:02 +03:00 |
|
Bananymous
|
55ea5c5488
|
Kernel: add basic support for environment variables
exec functions will search files from PATH
|
2023-06-05 22:51:02 +03:00 |
|
Bananymous
|
290b81dedc
|
BAN: add StringView::contains(char)
|
2023-06-05 22:51:02 +03:00 |
|
Bananymous
|
c6b5cc1e07
|
Kernel: exec now has better posix errors
|
2023-06-05 21:12:08 +03:00 |
|
Bananymous
|
357081346e
|
Shell: load old termios for process execution
|
2023-06-05 21:12:08 +03:00 |
|
Bananymous
|
896b919c9d
|
Kernel/LibC: pass environ pointer to process
|
2023-06-05 21:12:08 +03:00 |
|
Bananymous
|
6b73f4d187
|
Kernel: TTY now actually flushes on ^D
|
2023-06-05 20:21:46 +03:00 |
|
Bananymous
|
08a806e75d
|
Kernel: verify that loaded elfs are executable
|
2023-06-05 19:29:32 +03:00 |
|
Bananymous
|
73c11c3d29
|
Shell: add bareboness utf8 support
This should work as long as TTY provides only valid utf8.
If the utf is invalid, assertion fails and the shell dies.
|
2023-06-05 18:55:22 +03:00 |
|
Bananymous
|
5af77dcfb9
|
Shell: we now support left/right arrows
|
2023-06-05 18:24:41 +03:00 |
|
Bananymous
|
a7dc7ecb90
|
LibC: abort now prints 'abort()' and exits
we used to call assert in abort which then recursively called
abort again.
|
2023-06-05 18:23:19 +03:00 |
|
Bananymous
|
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 |
|
Bananymous
|
efb355c7be
|
BuildSystem: disable nls from gcc
|
2023-06-05 17:55:47 +03:00 |
|
Bananymous
|
d1ad38c8d4
|
Kernel/LibC: add SYS_STAT and stat(), lstat()
|
2023-06-05 14:37:14 +03:00 |
|
Bananymous
|
69b94dad00
|
Base: revert bin and lib symlinks to relative paths
Absolute paths fucked up toolchain building and usespace linking,
since g++ was finding host libraries from /usr/lib.
|
2023-06-05 10:08:01 +03:00 |
|
Bananymous
|
4c40aa6b38
|
Userspace: Start work on proper shell
|
2023-06-05 01:42:57 +03:00 |
|
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 |
|