Commit Graph

1045 Commits

Author SHA1 Message Date
6f05feb55f
Add sleeping mechanism
All checks were successful
continuous-integration/drone/pr Build is passing
2022-12-07 15:55:58 +01:00
71d2b492ea
Add accessors for when you're sure a linked list is not empty
All checks were successful
continuous-integration/drone/pr Build is passing
2022-12-07 15:21:50 +01:00
6cd25fb9b1
Check for runnable threads
All checks were successful
continuous-integration/drone/pr Build is passing
2022-12-07 15:17:20 +01:00
021ea1063b
Add a state to Thread 2022-12-07 15:14:58 +01:00
48fe2d4b04
Initialize and demo the scheduler
All checks were successful
continuous-integration/drone/pr Build is passing
2022-12-07 15:04:11 +01:00
c561b0b310
x86_64: Invoke the scheduler every millisecond 2022-12-07 15:04:02 +01:00
f97e392f89
Add a Scheduler!! 2022-12-07 15:03:34 +01:00
ad11aa719e
Add a Thread class which can be part of a DoublyLinkedList 2022-12-07 15:02:46 +01:00
b9b7d1e201
KernelVM: clean up a bit 2022-12-07 14:48:50 +01:00
8c04788793
Add a Stack convenience class 2022-12-07 14:48:24 +01:00
c5476115df
CPU.h: pragma once 2022-12-07 14:48:08 +01:00
b93a208f22
Make idle_loop noreturn 2022-12-07 14:46:56 +01:00
98a55b2c13
Bitmap: Fix crash by attempting to memset -1 bits (UINT64_MAX) 2022-12-07 14:46:11 +01:00
3248041aef
Bitmap: short circuit on 0-byte clears 2022-12-07 14:32:41 +01:00
cbf061d18f
Make build-debug.sh also add debug symbols to luna 2022-12-07 14:32:07 +01:00
7c557b2eb4
Timer: add raw_ticks 2022-12-07 14:31:40 +01:00
7db1a8253b
CPU: Add an idle_loop method 2022-12-07 12:26:09 +01:00
f456eb3b6a
Run clang-format 2022-12-07 12:25:42 +01:00
56205a4a2f
Add a should_invoke_scheduler method 2022-12-07 12:15:30 +01:00
beab3454b5
kernel: Enable -Wsign-conversion and -Wcast-align
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-07 11:47:46 +01: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
a3b69a0cfa
Update README.md
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-07 11:13:16 +01:00
ee276a3a35
Add the nodiscard attribute to make and make_array
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-07 11:01:45 +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
b5c6ae253d
Make LinkedList a lot better
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-06 18:41:35 +01:00
09e447d9d2
Heap: Use LinkedList instead of doing things manually 2022-12-06 18:28:04 +01:00
d8f75f1d3c
LinkedList: Add an append_after() method
Can be used to append an item after another one instead of at the end of the list.
With doubly linked lists, this is extremely easy to achieve (O(1)).
2022-12-06 18:25:08 +01:00
146da13e43
LinkedList: Make sure to explicitly mark the first node's next and last nodes as nullptr 2022-12-06 18:23:19 +01:00
07e6ebd3cc
LinkedList: Fix nonnull_or_error 2022-12-06 18:22:45 +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
cccf89dd16
Heap: Remove outdated FIXME 2022-12-06 18:20:18 +01:00
87fb195202
Add DoublyLinkedList data structure
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-06 17:37:43 +01:00
dd29156c85
Alloc: make() now takes variadic arguments, to forward to the constructor 2022-12-06 17:36:20 +01:00
eef74e2897
Add a generic error code (ENONE) 2022-12-06 17:35:38 +01:00
a021e7a309
Move make and destroy to luna
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-06 16:41:22 +01:00
1fa99f4f64
Make {add,sub,mul}_will_overflow more compiler-independent
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-06 15:53:06 +01:00
26b44e651d
Change safe_{sub,add,mul} so they perform the operation only once
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-06 15:47:59 +01:00
b338126854
Heap: Use safe_mul in kcalloc() 2022-12-06 15:44:21 +01:00
e91c04b1d1
luna: Introduce safe arithmetic operations, which return an error if an operation would overflow 2022-12-06 15:40:18 +01:00
8ff9cb4b96
x86_64: Add a friendlier handler for page faults
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-05 21:02:21 +01:00
1d0dd8fa93
Use KernelVM in kmalloc() and friends
Much better now!!
2022-12-05 21:02:05 +01:00
ba758bcef8
Initialize the KernelVM 2022-12-05 21:01:18 +01:00
6c3024d4ee
Heap: Count the heap blocks' size in the size required for an allocation 2022-12-05 21:01:06 +01:00