c5220cbf64
LinkedList: Rename append_after to add_after
2022-12-17 15:27:00 +01:00
59c9d8f119
asm -> asm volatile
continuous-integration/drone/push Build is passing
2022-12-17 14:32:24 +01:00
f77126768f
Improve message
2022-12-17 13:48:22 +01:00
abbed13f27
Add a 'pure' variant of cstyle_format which is infallible
...
If we cannot fail to output, it doesn't make sense to propagate errors. So if you're SURE there are no errors, use pure_cstyle_format().
If, however, output can fail, use cstyle_format().
This has a drawback of adding quite a bit of code duplication to Format.cpp.
Some of it is dealt using templates, but some code still remains duplicate.
2022-12-17 12:38:22 +01:00
df9a13cbfb
KernelVM: Make g_used_vm atomic and g_kernelvm_bitmap a LockedValue
continuous-integration/drone/push Build is passing
2022-12-17 10:56:24 +01:00
132963070b
MemoryManager: Make some variables atomic and the frame bitmap a LockedValue
2022-12-17 10:56:24 +01:00
f97515bd7e
Kernel: Add Spinlock and LockedValue<T>
2022-12-17 10:55:54 +01:00
6e5d2b5335
Thread: Make g_next_id atomic
2022-12-17 10:50:49 +01:00
9d6235e109
CPU: Add a pause() method
2022-12-17 10:45:55 +01:00
b316e3b3b7
Print stack trace on assertion fail
continuous-integration/drone/push Build is passing
2022-12-16 20:49:09 +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
2e24e09146
Convert MemoryMapIterator to Option
continuous-integration/drone/push Build is passing
2022-12-16 19:47:20 +01:00
a32590ff8a
Call expect_value more
2022-12-16 19:44:33 +01:00
cedcfa9c63
Improve cleanup on MemoryManager failure + add methods that use KernelVM
continuous-integration/drone/push Build is passing
2022-12-16 19:36:38 +01:00
814672c771
Remove some redundant error propagation
...
continuous-integration/drone/push Build is passing
Why can printing to the serial port or format onto a string fail?
Even if cstyle_format returns Result<usize>, we shouldn't always follow suit.
2022-12-16 18:32:29 +01:00
41b3c8adb2
Convert to_dynamic_unit to OwnedStringView and rename the old variant to to_dynamic_unit_cstr
continuous-integration/drone/push Build is passing
2022-12-16 18:18:24 +01:00
d759058b80
Introduce std::nothrow
...
Let's make sure we explicitly tell new that we don't want exceptions
2022-12-16 18:14:48 +01:00
da104c87cb
Heap: Return Option in split()
2022-12-08 16:09:12 +01:00
b6173e2b67
LinkedList: Return Option instead of ENONE if no value
2022-12-08 16:09:04 +01:00
6cee208e62
Kernel: Enable -Wsign-conversion
...
continuous-integration/drone/push Build is passing
For real this time, turns out me, being dumb, added it to Luna instead of the kernel.
2022-12-08 15:09:32 +01:00
779fda307a
More scope guards!!
continuous-integration/drone/push Build is passing
2022-12-08 15:01:04 +01:00
1d5d1daa57
Add scope guards
2022-12-08 14:56:11 +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
757cee4693
Add accessors for when you're sure a linked list is not empty
2022-12-07 16:11:59 +00:00
70497c37fb
Check for runnable threads
2022-12-07 16:11:59 +00:00
57517252d8
Add a state to Thread
2022-12-07 16:11:59 +00:00
f169718a4b
Initialize and demo the scheduler
2022-12-07 16:11:59 +00:00
c907e16311
x86_64: Invoke the scheduler every millisecond
2022-12-07 16:11:59 +00:00
13f5d09cfd
Add a Scheduler!!
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
fbd290c01b
KernelVM: clean up a bit
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
c657b302c9
Timer: add raw_ticks
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
bbfaa4645a
Add a should_invoke_scheduler method
2022-12-07 16:11:59 +00:00
1badc40a4a
Run include-what-you-use everywhere
2022-12-07 11:40:02 +01:00
c2927de191
Remove unused includes
continuous-integration/drone/push Build is passing
2022-12-07 11:22:34 +01:00
dad95a8160
Map the page bitmap to virtual memory
2022-12-07 10:58:59 +01:00
1ebd892c16
Convert uses of u64 to usize
...
Not all of them, but if you're measuring a size it's more appropriate to use usize than u64.
2022-12-07 10:55:47 +01:00
8598b1e8fc
Replace the _noreturn macro with the C++ native attribute [[noreturn]]
continuous-integration/drone/push Build is passing
2022-12-06 19:40:35 +01:00
c099877c35
Remove unnecessary error propagation in Log.cpp
...
continuous-integration/drone/push Build is passing
Serial and TextConsole always succeed, no need to act as if they could fail
2022-12-06 19:35:34 +01:00
314acbfe21
Change the serial log to display only milliseconds
continuous-integration/drone/push Build is passing
2022-12-06 19:31:41 +01:00
39b310b6b9
Make alignment a template parameter to help the compiler optimize
continuous-integration/drone/push Build is passing
2022-12-06 19:27:58 +01:00
d48eb85d1d
Heap: Avoid magic numbers
continuous-integration/drone/push Build is passing
2022-12-06 19:05:00 +01:00
09e447d9d2
Heap: Use LinkedList instead of doing things manually
2022-12-06 18:28:04 +01:00
2734353a5d
Heap: Just align it on a 16-byte boundary if it's not aligned
2022-12-06 18:21:19 +01:00