Commit Graph

1013 Commits

Author SHA1 Message Date
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
0edabd6d87
Heap: Add a new block to the end of the linked list
*facepalm*

This was causing page faults when having two blocks and the first one (oldest one) being freed first.
2022-12-05 21:00:21 +01:00
d445b29477
Add a virtual memory allocator for the kernel 2022-12-05 20:36:24 +01:00
a8fb4ca739
Move CI badge 2022-12-05 19:57:41 +01:00
eaf8a8aafe
Make sure the OS used in CI is Linux
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-05 19:26:27 +01:00
bf7bcd7d56
Rename CI pipeline
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-05 19:19:50 +01:00
20eeecb3e1
Run CI on push
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-05 19:16:58 +01:00
4ec6442ba0
Add build status badge 2022-12-05 19:16:11 +01:00
2677fca5b7
Remove formatting step 2022-12-05 19:09:33 +01:00
f767d98037
Please work 2022-12-05 19:07:01 +01:00
adf6844d49
Update drone.yml 2022-12-05 19:03:06 +01:00
999d90d588
Update check-formatting.sh 2022-12-05 19:02:23 +01:00
62e4ed824d
Update drone.yml 2022-12-05 18:50:01 +01:00
ac2da14319
Update config for CI 2022-12-05 18:48:40 +01:00
bd7b9ad237
Update drone.yml 2022-12-05 18:44:44 +01:00
ca0e47b8e4
Update drone.yml 2022-12-05 18:26:31 +01:00
744d39c27b
Update drone.yml 2022-12-05 18:24:34 +01:00
0c9b822304
Update drone.yml 2022-12-05 18:22:52 +01:00
f21d153077
Update drone.yml 2022-12-05 18:21:30 +01:00
82eda5d6aa
Update drone.yml 2022-12-05 18:19:55 +01:00
d8a3d74779
Actual steps 2022-12-05 18:13:12 +01:00
08b4c078dd
Will it work now? 2022-12-05 18:11:22 +01:00
8f3e80ae47
Try to get it right? 2022-12-05 18:08:50 +01:00
4074835185
Update drone.yml 2022-12-05 18:06:30 +01:00
e6c56172d3
Try adding a drone.yml 2022-12-05 18:00:05 +01:00
95d969ed25
Add message to inform of prebuilt toolchains 2022-12-05 17:48:26 +01:00
762131a425
Make more constexpr 2022-12-05 16:43:52 +01:00
2eaa458555
Remove release_value call 2022-12-05 16:41:39 +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
a63a8b32b5
Make new and delete noexcept and return nullptr on failure 2022-12-05 13:45:32 +01:00
891320f7d3
Heap: Make const 2022-12-05 13:41:58 +01:00
7cc139c3f7
Make expect and check use unlikely 2022-12-05 13:35:33 +01:00