Commit Graph

628 Commits

Author SHA1 Message Date
c5220cbf64
LinkedList: Rename append_after to add_after 2022-12-17 15:27:00 +01:00
59c9d8f119
asm -> asm volatile
All checks were successful
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
All checks were successful
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
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-16 20:49:09 +01:00
59765aa334
Rename String.h -> CString.h
All checks were successful
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
All checks were successful
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
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-16 19:36:38 +01:00
814672c771
Remove some redundant error propagation
All checks were successful
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
All checks were successful
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
All checks were successful
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!!
All checks were successful
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
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-07 18:11:24 +01:00
0d437cfcca
Add support for stack traces
All checks were successful
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
All checks were successful
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]]
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-06 19:40:35 +01:00
c099877c35
Remove unnecessary error propagation in Log.cpp
All checks were successful
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
All checks were successful
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
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-06 19:27:58 +01:00
d48eb85d1d
Heap: Avoid magic numbers
All checks were successful
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