794567327f
kernel, luna: Port non-VFS changes over from pull request #22
...
continuous-integration/drone/push Build is passing
OwnedPtr, SharedPtr: Add operator bool
Option, Result: Make try_move_value() non-const since it modifies the Option
kernel: Switch to a stack we control for the main task as soon as we leave early boot
Heap: Fix GPF caused when making many small allocations
Heap: Avoid accessing a block after it's potentially deleted
luna: Skip UBSAN.cpp in CMakeLists as that's not implemented yet
luna: Use spinlocks in the heap implementation
kernel, luna: Move Spinlock.h to luna
Option: Use __builtin_launder to ensure that the compiler doesn't label this as UB
SharedPtr: Implement make_shared using adopt_shared
SharedPtr: Delete ptr on failure in all adopt_shared* functions
2023-02-25 17:09:03 +01:00
635437a4a4
luna: Add a new idiomatic way to mark unused parameters as used while keeping their names
...
Just call ignore(...)
2023-01-25 21:14:44 +01:00
6677c643a5
kernel: Start scanning the PCI bus for devices
continuous-integration/drone/push Build is passing
2023-01-23 20:07:17 +01:00
de04c094e7
x86_64: Skip enabling WP for now until I find how to check for its availability
2023-01-23 20:06:45 +01:00
d5b1d72396
x86_64/MMU: Map the kernel page directory to virtual memory
...
This avoids depending on the kernel address space to create a new userspace one,
since there is no physical memory access.
This was fine for a single process, since its address space was created from the kernel one
and no more address spaces were created,
but for two or more, this started to become problematic, since we would create one address space
while being in another process's address space, which has no direct mapping of physical memory.
2023-01-22 14:46:03 +01:00
631cdd0204
x86_64/CPU: Skip null instruction pointers on stack trace generation
continuous-integration/drone/push Build is passing
2023-01-16 20:44:45 +01:00
1b807a4e06
arch/Timer: Make sure ARCH_TIMER_FREQ is a power of two
...
(avoid division and modulo, division is slow)
Fortunately, GCC will optimize divisions by powers of two to simple bitwise shifts :)
2023-01-16 19:43:05 +01:00
84c82a4e75
luna, kernel: More constness
continuous-integration/drone/push Build is passing
2023-01-10 19:31:41 +01:00
87a4bc91d8
arch/x86_64: Nicer display for page faults that shows a human-readable version of the error code
2023-01-06 17:31:22 +01:00
fd8a0175d9
Add a syscall infrastructure (our baby program can print to the console now!)
continuous-integration/drone/push Build is passing
2023-01-05 22:39:56 +01:00
0aac6c888d
x86_64: Basic exit() syscall!
...
User processes need to do something, amirite?
2023-01-05 21:53:48 +01:00
31ea030c7f
MMU: Add functions to create and delete userspace page directories
2023-01-05 21:50:26 +01:00
5854e5e530
Add newlines at end-of-file
2023-01-02 13:07:29 +01:00
7952d1d8a0
x86_64: Add basic keyboard support with an ASYNC DRIVER
continuous-integration/drone/push Build is passing
2022-12-26 19:59:18 +01:00
a1eca479d5
x86_64: Add a getter for the initial page directory
continuous-integration/drone/push Build is passing
2022-12-26 12:57:25 +01:00
2600acc96c
Thread: Add init_regs_user()
2022-12-26 12:46:07 +01:00
0054777e7d
x86_64: Warn if NX is not supported
2022-12-26 12:11:10 +01:00
08984e1673
x86_64: Create a has_flag() helper function and remove redundant clearing of reserved bits
2022-12-26 12:10:47 +01:00
59d69f684f
x86_64: Add general protection fault handler
continuous-integration/drone/push Build is passing
2022-12-24 11:49:47 +01:00
a3595e71a9
Update .clang-format
continuous-integration/drone/push Build is passing
2022-12-21 20:22:44 +01:00
2e8ea724a0
arch/x86_64: Refactor the stack tracing code to remove duplicate code
continuous-integration/drone/push Build is passing
2022-12-21 17:21:01 +01:00
a89ae9bed7
Run include-what-you-use
continuous-integration/drone/push Build is passing
2022-12-17 15:51:19 +01:00
95b0091622
Split off arch/x86_64/CPU.cpp into various files
continuous-integration/drone/push Build is passing
2022-12-17 15:45:06 +01:00
59c9d8f119
asm -> asm volatile
continuous-integration/drone/push Build is passing
2022-12-17 14:32:24 +01:00
9d6235e109
CPU: Add a pause() method
2022-12-17 10:45:55 +01:00
59765aa334
Rename String.h -> CString.h
...
continuous-integration/drone/push Build is passing
Let's not confuse String.h with a managed string class, it's in fact the equivalent of the C stdlib's <string.h>
2022-12-16 20:40:04 +01:00
c8302a4fef
Add convenience functions to print the stack trace directly
continuous-integration/drone/push Build is passing
2022-12-07 18:11:24 +01:00
0d437cfcca
Add support for stack traces
continuous-integration/drone/push Build is passing
2022-12-07 17:39:59 +01:00
d93d95f23c
Add sleeping mechanism
2022-12-07 16:11:59 +00:00
57517252d8
Add a state to Thread
2022-12-07 16:11:59 +00:00
c907e16311
x86_64: Invoke the scheduler every millisecond
2022-12-07 16:11:59 +00:00
12aa014a3d
Add a Thread class which can be part of a DoublyLinkedList
2022-12-07 16:11:59 +00:00
0bbd026660
CPU.h: pragma once
2022-12-07 16:11:59 +00:00
5d988c088f
Make idle_loop noreturn
2022-12-07 16:11:59 +00:00
fd6a74e61c
CPU: Add an idle_loop method
2022-12-07 16:11:59 +00:00
287c4ab060
Run clang-format
2022-12-07 16:11:59 +00:00
1badc40a4a
Run include-what-you-use everywhere
2022-12-07 11:40:02 +01:00
8ff9cb4b96
x86_64: Add a friendlier handler for page faults
continuous-integration/drone/push Build is passing
2022-12-05 21:02:21 +01:00
1e3706ac01
Make ARCH_PAGE_SIZE and ARCH_TIMER_FREQ known at compile-time
2022-12-05 16:36:41 +01:00
4f183958e3
General constness + [[gnu::packed]] everywhere
2022-12-05 16:13:38 +01:00
c7ab6bc2d3
Reorganize the luna/ directory so that headers aren't in the top level include path
2022-12-04 12:42:43 +01:00
bed29e71af
Replace some uses of check() with expect()
2022-12-04 12:25:16 +01:00
985d45ddfb
Switch to logging functions everywhere
2022-11-30 17:16:36 +01:00
d2856d8812
Provide meaningful error numbers
2022-11-30 17:13:59 +01:00
1ed51d11cb
Do not push unused values
2022-11-23 19:37:25 +01:00
82893fa3a4
Introduce a kernel_yield function to use once a scheduler is implemented
2022-11-23 19:34:04 +01:00
7230eceb4d
x86_64/Timer: Show explanatory message on static assertion fail
2022-11-23 18:58:39 +01:00
88f588a0c5
Make ARCH_TIMER_FREQ less frequent so it is more accurate (I hope)
2022-11-23 18:00:09 +01:00
d96cb73995
Rename physical "pages" to "frames"
...
AFAIK, this is the proper naming scheme. "Pages" are virtual, and "frames" physical.
2022-11-19 22:27:08 +01:00
847f2b4f4c
Replace more usage of stdint.h types with Luna's Types.h
2022-11-19 22:25:03 +01:00