Bananymous
a42af7e973
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
2ce244d303
BAN: Errors now includes assert.h
2023-06-03 18:53:05 +03:00
Bananymous
a775a920d0
BuildSystem: remove sse and sse2 from userspace
2023-06-03 16:05:32 +03:00
Bananymous
4f84faf392
LibC: printf string persision works now
2023-06-03 15:07:02 +03:00
Bananymous
a4cb5d8360
Kernel: Inode/Device detection is done with overridden bool functions
2023-06-03 13:28:15 +03:00
Bananymous
da7f09cf82
Kernel: Heap will return 0 if no free page is available
2023-06-03 02:55:31 +03:00
Bananymous
0166af472b
Kernel: DiskCache will try to shrink_to_fit after cache cleanup
2023-06-03 02:55:22 +03:00
Bananymous
884d986bd6
Kernel: DiskCache won't crash when running out of kmalloc memory
2023-06-03 02:36:20 +03:00
Bananymous
59b807189f
Kernel: add basic disk cache
...
ATADevices now add disk cache to themselves
2023-06-03 02:23:14 +03:00
Bananymous
fb1c7015b1
Kernel: Shell 'memory' now prints heap memory usage
2023-06-03 02:22:18 +03:00
Bananymous
d4123f62b2
Update README.md
2023-06-02 18:43:30 +03:00
Bananymous
a3f410d1a1
Userspace: create_program creates proper cmake files again
2023-06-02 18:42:25 +03:00
Bananymous
1d19a4bffe
BuildSystem: all scripts have now bash shebang
...
I could not use the scripts on debian
2023-06-02 18:41:45 +03:00
Bananymous
271dd91292
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
9bd4d68f9c
Kernel: Shell ls and stat now properly show symlinks
2023-06-02 18:22:56 +03:00
Bananymous
3c3c7826ef
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
2207357b93
LibC: add __cxa_at_exit() for libc
2023-06-02 17:50:55 +03:00
Bananymous
3a69768eb0
LibC: remove select() declaration
...
This already comes from sys/select.h
2023-06-02 17:29:09 +03:00
Bananymous
afb29ff3ec
LibC: rename [[noreturn]] to __attribute__((__noreturn__))
...
This compiles with C compiler
2023-06-02 17:28:36 +03:00
Bananymous
e6f0f891a6
LibC: stdlib.h doesn't seem to typedef wchar_t without __need_wchar_t
2023-06-02 17:27:31 +03:00
Bananymous
36e5aa4683
LibC: fix INFINITY definition typo
2023-06-02 17:27:14 +03:00
Bananymous
7738050105
LibC: fix DIR typedef for C code
2023-06-02 17:26:38 +03:00
Bananymous
4bf11ec349
LibC: complex.h undefs I before defining it
2023-06-02 17:13:09 +03:00
Bananymous
d821012eed
LibC: mbstate_t is empty struct
2023-06-02 17:10:29 +03:00
Bananymous
35c6edd989
LibC: fix sig_atomic_t definition
2023-06-02 17:08:43 +03:00
Bananymous
633cb4f282
Kernel: VFS now has max link depth of 100
2023-06-02 12:50:40 +03:00
Bananymous
4d4d0e26a9
Kernel: Symlinks are now working
...
We still have to implement loop or depth detection
2023-06-02 11:43:46 +03:00
Bananymous
feea2d4024
BAN: Fix function call in Vector
2023-06-01 00:50:04 +03:00
Bananymous
0ffd2a5c1d
Kernel: Shell can now list symlinks
2023-06-01 00:25:53 +03:00
Bananymous
232fdcb82c
Kernel: add basic support for symlinks
2023-06-01 00:24:45 +03:00
Bananymous
0ccc23d544
Kernel: Shell opens standard files
2023-05-31 23:14:15 +03:00
Bananymous
789ca3db1a
BuildSystem: cmake creates /usr/bin
2023-05-31 23:13:53 +03:00
Bananymous
cb359a05dc
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
14982c137a
Userspace: make test program link against libc on change
2023-05-31 22:36:47 +03:00
Bananymous
0acab11620
LibC: add execl
2023-05-31 22:36:26 +03:00
Bananymous
02f0239016
Kernel: Cleanup exec code
2023-05-31 22:36:05 +03:00
Bananymous
ab61b49aca
Kernel: Add SYS_EXEC syscall
2023-05-31 20:57:33 +03:00
Bananymous
4da1d6fd27
Kernel: Implement Process::exec()
2023-05-31 20:56:29 +03:00
Bananymous
909e847369
Kernel: Move userspace entry functions to Process instead of Thread
2023-05-31 19:31:10 +03:00
Bananymous
eafa09fecf
Kernel: boot.S maps GiB as single pdpte
2023-05-31 00:51:15 +03:00
Bananymous
8175348284
Kernel: Fix comment
2023-05-31 00:51:15 +03:00
Bananymous
b2832cb47a
Kernel: PageTable destructor works now
...
we are successfully booting higher half kernel now :)
2023-05-31 00:44:14 +03:00
Bananymous
9f499991c8
Kernel: PageTable::create_userspace() now works
2023-05-31 00:44:14 +03:00
Bananymous
9a416e8ae8
Kernel: kmalloc free error prints the pointer
2023-05-31 00:34:56 +03:00
Bananymous
911922c6a3
Kernel: RSDP location is now done with virtual addresses
2023-05-31 00:34:21 +03:00
Bananymous
1f2fd59ad5
Kernel: Physical range now calculates RAM with physical addresses
2023-05-31 00:33:44 +03:00
Bananymous
708d401d2c
Kernel: Heap gets multiboot pointer with P2V
2023-05-30 23:57:44 +03:00
Bananymous
ed0dcacab3
Kernel: Move V2P and P2V to Memory/Types.h
2023-05-30 23:57:03 +03:00
Bananymous
e86050f343
Kernel: PageTable::map_range_at maps correctly the last page
2023-05-30 23:56:07 +03:00
Bananymous
57f7da6ce1
Kernel: Booting with higher half kernel gets to Heap initialization
2023-05-30 22:21:12 +03:00
Bananymous
93e6455171
Kernel: start work on higher half kernel
2023-05-30 08:00:17 +03:00
Bananymous
8f38780197
Toolchain: lib gcc is wuild with mcmodel=large
2023-05-30 07:59:41 +03:00
Bananymous
341f7e41e5
LibC: Fix some headers to make gcc build again
2023-05-30 01:17:45 +03:00
Bananymous
265fe9c62e
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
3b9d60d7cb
Kernel: Remove unused includes of CriticalScope
2023-05-29 21:15:55 +03:00
Bananymous
278b873e89
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
e640344d7a
Kernel: Rename MMU to PageTable
...
This is more descriptive name for what it actually represents
2023-05-29 21:06:09 +03:00
Bananymous
7151bb86a8
Kernel/LibC: opening standard files is done in libc
2023-05-29 20:21:19 +03:00
Bananymous
2a34391b71
LibC: open() now just returns syscall(SYS_OPEN, ...)
...
errno is handled in syscall()
2023-05-29 20:19:17 +03:00
Bananymous
3d95cf02f3
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
dd3f34cb2c
Kernel: Make RecursiveSpinLock thread safe
...
also SpinLock is now implemented with gcc builtins
2023-05-29 19:38:09 +03:00
Bananymous
0c316ebfb2
Kernel: Add SYS_SLEEP
2023-05-28 22:34:48 +03:00
Bananymous
282bf24f65
Kernel: fork() now copies allocations through FixedWidthAllocator
2023-05-28 21:34:35 +03:00
Bananymous
f964f6be8d
Kernel: Move page macros to Types.h
2023-05-28 21:03:08 +03:00
Bananymous
0202ccec5f
Kernel: ISR will now crash userspace process instead of panicing kernel
2023-05-28 20:53:10 +03:00
Bananymous
636c308993
Kernel: fork() now copies allocation done through GeneralAllocator
2023-05-28 20:37:39 +03:00
Bananymous
6fdbe6f9c2
Kernel: Add bareboness fork() function
2023-05-28 18:08:49 +03:00
Bananymous
c19f4c019a
Kernel: Add invalidate() to MMU
2023-05-28 18:05:49 +03:00
Bananymous
83eb3dc0cb
Kernel: fix MMU::map_page_at()
...
We used to only reassign if flags changed
2023-05-28 17:57:05 +03:00
Bananymous
481c8406f3
LibC: fputs uses fputc instead of putc
2023-05-28 17:48:34 +03:00
Bananymous
0129619d9a
Kernel: Processes and Threads use VirtualRange memory allocations
2023-05-28 17:48:34 +03:00
Bananymous
e0479b291d
Kernel: Move PhysicalRange to its own file and add VirtualRange
2023-05-28 17:48:34 +03:00
Bananymous
b847d7dfd5
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
245dff8027
Shell: we now link BAN (we can't use it though)
2023-05-26 22:31:21 +03:00
Bananymous
fed690a7f2
Kernel: Directory listing is working again
2023-05-26 22:31:21 +03:00
Bananymous
54d981120d
Kernel: kmalloc debug_dump is marked [[maybe_unused]]
2023-05-26 22:31:21 +03:00
Bananymous
f79250c4d4
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
78b62776d2
BAN: libban is now build into library dir
2023-05-26 22:31:21 +03:00
Bananymous
bda4614783
BAN: Errors.h can be included from userspace
2023-05-26 22:31:21 +03:00
Bananymous
0ab3332ad3
Userspace: Start work on shell
2023-05-26 22:31:21 +03:00
Bananymous
9e0abbc2f0
Kernel: Add bareboness possibility to set termios
2023-05-26 22:31:21 +03:00
Bananymous
496adb61a4
Buildsystem: Fix userspace link order
2023-05-26 22:31:21 +03:00
Bananymous
4a4a3bf184
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
f33e78882e
Kernel: Add argc and argv to process entry
2023-05-16 00:27:49 +03:00
Bananymous
0ff067bdb7
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
31ac3260ed
Kernel: MMU keeps track of the current
2023-05-16 00:26:39 +03:00
Bananymous
d82c6c2337
LibC: fix bugs with printf
2023-05-15 22:47:08 +03:00
Bananymous
632b699475
BAN: add is_arithmetic and is_signed to Traits.h
2023-05-15 20:26:29 +03:00
Bananymous
85039020d3
Kernel: argc is passed as zero to userspace
2023-05-11 18:28:32 +03:00
Bananymous
1a0fdc5a44
LibC: printf now prints 0 as integer
2023-05-11 18:20:37 +03:00
Bananymous
fb1bab7c30
BuildSystem: add helper to create userspace programs
2023-05-11 18:10:06 +03:00
Bananymous
7eb43990ad
BuildSystem: userspace has cmake target
2023-05-11 16:19:53 +03:00
Bananymous
53f4b5a9da
LibC: add function declarations to sys/stat.h
2023-05-11 15:11:33 +03:00
Bananymous
1d4a6c3a42
LibC: add function declarations to dirent.h
2023-05-11 01:42:52 +03:00
Bananymous
40083e4aa1
LibC: add definitions to math.h
2023-05-11 01:40:42 +03:00
Bananymous
bd929bff07
LibC: add defines in stdio.h
2023-05-11 01:39:16 +03:00
Bananymous
cd4a0530fa
LibC: add function declarations to unistd.h
2023-05-11 00:34:03 +03:00
Bananymous
273fdd2235
LibC: add function declarations to string.h
2023-05-11 00:34:03 +03:00
Bananymous
b20f2e8d31
LibC: add function declarations to math.h
2023-05-11 00:34:03 +03:00
Bananymous
e756cde2b1
LibC: define all errnos and strerror{name,desk}_np
2023-05-11 00:34:03 +03:00