5fb2ff09c7
kernel, luna, libc: Move the heap code to a common zone, to be used by both kernel and userspace
2023-01-13 19:27:53 +01:00
5854e5e530
Add newlines at end-of-file
2023-01-02 13:07:29 +01:00
4081186b27
Heap: Rewrite kmalloc to use Option<HeapBlock*> instead of nullable pointers to iterate over the heap
...
continuous-integration/drone/push Build is passing
At some point, this should be done inside LinkedList itself, but we have no such thing as break in for_each().
It's iterate over everything or nothing.
This also requires operator= in Option, might be also added to Result in the future.
2022-12-30 19:02:25 +01:00
ed34009b50
Heap: Log more details of blocks
continuous-integration/drone/push Build is passing
2022-12-26 16:17:24 +01:00
1c70ab5a1a
Heap: Avoid combines with blocks outside a range
2022-12-26 15:20:56 +01:00
7e62ee66be
Change heap.first().has_value() to the cheaper heap.count()
continuous-integration/drone/push Build is passing
2022-12-26 12:24:39 +01:00
042f999677
Heap: SCRUB IT ALL
...
continuous-integration/drone/push Build is passing
If your memory is all 0xacacacac there is a big probability you haven't initialized it.
2022-12-19 13:20:38 +01:00
a11a5dec1f
DoublyLinkedList -> LinkedList
continuous-integration/drone/push Build is passing
2022-12-19 12:43:23 +01:00
799a02c883
Remove unnecessary std:: prefix from inside std
continuous-integration/drone/push Build is passing
2022-12-17 15:33:47 +01:00
c5220cbf64
LinkedList: Rename append_after to add_after
2022-12-17 15:27:00 +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
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
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
779fda307a
More scope guards!!
continuous-integration/drone/push Build is passing
2022-12-08 15:01:04 +01:00
757cee4693
Add accessors for when you're sure a linked list is not empty
2022-12-07 16:11:59 +00: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
cccf89dd16
Heap: Remove outdated FIXME
2022-12-06 18:20:18 +01:00
b338126854
Heap: Use safe_mul in kcalloc()
2022-12-06 15:44:21 +01:00
1d0dd8fa93
Use KernelVM in kmalloc() and friends
...
Much better now!!
2022-12-05 21:02:05 +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
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
ee76bdf84d
Add sanity check
2022-12-04 13:41:14 +01:00
bde3d55eb2
Remove escape from comment
2022-12-04 13:38:48 +01:00
f8120e01c0
Panic in delete as well
2022-12-04 12:58:37 +01:00
22019ac6b2
Print the error instead
2022-12-04 12:57:43 +01:00
96b32f5a93
Please use make<T> and destroy<T> instead of new and delete
...
Those are there only for common stuff (in the Luna library) that needs an environment-agnostic way of allocating memory.
new and delete are standard, thus we should use those.
2022-12-04 12:55:32 +01:00
adb2c2ab41
Add kernel-side new and delete
2022-12-04 12:52:49 +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
ff952fa2e4
Confirm alignment when calculating an offset to split at
2022-11-20 18:04:29 +01:00
29defdf54d
Add a debug function to dump heap usage
2022-11-20 16:33:54 +01:00
caf6d1563c
Kernel: Add a heap memory allocator
...
This is the first time I've actually dropped liballoc in favor of writing my own implementation.
Usually, malloc() and such looked so complicated that I preferred to let a nice external library do the job.
But I've decided to try writing my own allocator, and now we have heap memory without any 3rd party code!
2022-11-20 15:15:26 +01:00