b27cefb9c5
SystemError: Define _LUNA_SYSTEM_ERROR_EXTENSIONS to compile properly in hosted envs
2023-01-06 13:30:49 +01:00
fd8a0175d9
Add a syscall infrastructure (our baby program can print to the console now!)
continuous-integration/drone/push Build is passing
2023-01-05 22:39:56 +01:00
5854e5e530
Add newlines at end-of-file
2023-01-02 13:07:29 +01:00
3442970678
Add vscode configuration
2023-01-02 13:00:22 +01:00
df8f9c6cf6
SharedPtr: adopt_shared_from_owned
continuous-integration/drone/push Build is passing
2022-12-31 12:02:15 +01:00
831711ab7e
TypeTraits: Remove const, volatile, and reference
continuous-integration/drone/push Build is passing
2022-12-31 11:50:30 +01:00
e2e21923d7
Result: Implement operator=()
continuous-integration/drone/push Build is passing
2022-12-30 19:06:47 +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
3a3968b268
Result: Add nonnull_or_error()
2022-12-30 18:46:27 +01:00
973e39a255
LinkedList: Move nonnull_or_empty_option to Option.h so everyone can use it
2022-12-30 18:46:18 +01:00
28f53f9ccf
LinkedList: Rename the nonnull_or_error() helper to a more accurate nonnull_or_empty_option()
2022-12-30 18:44:37 +01:00
1f36ecd044
LinkedList: Make expect_first() and expect_last() show a more accurate error description on panic
...
Instead of showing a generic "Option::value() called on an empty Option" with no useful source location,
you will get something like "check failed: m_start_node at LinkedList.h:139"
2022-12-30 18:43:39 +01:00
400d0395a2
Result: Avoid double-checking when calling through to the underlying Option
continuous-integration/drone/push Build is passing
2022-12-30 15:00:02 +01:00
7952d1d8a0
x86_64: Add basic keyboard support with an ASYNC DRIVER
continuous-integration/drone/push Build is passing
2022-12-26 19:59:18 +01:00
2af3997456
LinkedList: Fixed some boogs, LinkedList is now boog-free :)
2022-12-26 15:54:29 +01:00
7efb79dd26
LinkedList: Check for nullptrs in detach_from_list()
2022-12-26 12:45:49 +01:00
f71ccde833
Add an overload for aligned deletes which just calls the normal operator delete
2022-12-24 11:49:12 +01:00
e5ae2b0435
TarStream: Make read_contents and friends const
2022-12-23 13:08:31 +01:00
ad0f6546d7
Add a global initrd TarStream to make the initial ramdisk accessible everywhere
...
continuous-integration/drone/push Build is passing
It's also mapped into virtual memory instead of directly going into the physical location!!
2022-12-23 11:33:23 +01:00
c39e54b7c6
Make TarStream::read_contents take any pointer as output
2022-12-23 10:51:55 +01:00
4fa33a9689
SharedPtr: Add operator=
continuous-integration/drone/push Build is passing
2022-12-23 10:31:48 +01:00
bd4b05e534
Add OwnedPtr and SharedPtr
continuous-integration/drone/push Build is passing
2022-12-23 10:23:13 +01:00
9afaad8fed
Add dbgln() for the luna library
continuous-integration/drone/push Build is passing
2022-12-22 18:00:35 +01:00
a3595e71a9
Update .clang-format
continuous-integration/drone/push Build is passing
2022-12-21 20:22:44 +01:00
96135ff808
Use limits.h for the standard definition of WCHAR_MAX
continuous-integration/drone/push Build is passing
2022-12-21 20:11:00 +01:00
16bf8b38ea
UTF-8 decoder: Error out on overlong encodings
continuous-integration/drone/push Build is passing
2022-12-21 20:08:43 +01:00
7a2cb28475
Make sure isize matches ssize_t on most cases
continuous-integration/drone/push Build is passing
2022-12-20 17:12:44 +01:00
a11a5dec1f
DoublyLinkedList -> LinkedList
continuous-integration/drone/push Build is passing
2022-12-19 12:43:23 +01:00
1269a045bd
LinkedList: Add a convenience delayed_for_each() method.
...
This is a special way of iterating over the list which permits removing items while iterating.
2022-12-19 12:41:25 +01:00
5b72144fac
Add a handy consume() method to LinkedList
continuous-integration/drone/push Build is passing
2022-12-19 12:35:08 +01:00
31ee901e01
TarStream: Add a variant of read_contents() returning an OwnedStringView
2022-12-19 12:21:17 +01:00
9eb829f3a2
CString: Add strcmp()
2022-12-19 12:20:56 +01:00
1b92fe36b4
Store the stack inside a thread
2022-12-18 18:43:17 +01:00
00cf267ac7
Lock EFIXME and error_string() behind a #define
continuous-integration/drone/push Build is passing
2022-12-18 18:14:48 +01:00
a08310ff5e
Add some more errno definitions
continuous-integration/drone/push Build is passing
2022-12-18 18:09:52 +01:00
cda0d49a4e
Add todo()
continuous-integration/drone/push Build is passing
2022-12-18 17:15:42 +01:00
4a7e48ed5d
Make sure wchar_t is wide enough to hold all Unicode code-points
...
continuous-integration/drone/push Build is passing
Too bad if it isn't.
2022-12-18 17:14:12 +01:00
1d6092341a
Add a generic TarStream class
...
As long as it's in memory, we can use it :)
2022-12-18 16:38:47 +01:00
eadca3d25b
Add nullcpy()
...
Invented function to memcpy() with a specific size, but add a null terminator.
2022-12-18 16:31:02 +01:00
0d65f188f0
Alignment.h: Include the Types
2022-12-18 16:30:27 +01:00
730d0682ee
Result: Add try_set_value_with_specific_error()
2022-12-18 16:30:09 +01:00
6389099808
UTF-8 part 2: Encoding wide-character strings into UTF-8
...
continuous-integration/drone/push Build is passing
We now have Utf8StringEncoder and Utf8Encoder (no state this time)
2022-12-18 14:34:50 +01:00
9c1c6bb320
Add wcslen()
...
I think this can go in CString.h, no need to create a separate CWChar.h or something
2022-12-18 14:33:13 +01:00
75ba14a3ad
Add UTF-8 decoder support!!
2022-12-18 13:04:40 +01:00
23d405bbda
Add an unreachable() macro function that panics if reached
2022-12-18 12:40:28 +01:00
e4b971f09c
Make LinkedList::prepend() also set the element as the last one if we have no elements
continuous-integration/drone/push Build is passing
2022-12-17 15:28:18 +01:00
f5de9c5589
LinkedList: Add a prepend() method
continuous-integration/drone/push Build is passing
2022-12-17 15:27:16 +01:00
c5220cbf64
LinkedList: Rename append_after to add_after
2022-12-17 15:27:00 +01:00
2bc6398d3e
TRY(): Call release_value() instead of expect_release_value()
continuous-integration/drone/push Build is passing
2022-12-17 15:15:27 +01:00
34c738116c
Result: Make some member functions const
2022-12-17 15:15:00 +01:00
90bd4a83c0
Result, Option: Move member initialization to constructors
2022-12-17 15:14:27 +01:00
ee6387e7b5
Refactor NumberParsing.cpp + a lot of comments
2022-12-17 15:00:19 +01:00
97cb57d521
Check for overflow/underflow in parse_signed_integer
continuous-integration/drone/push Build is passing
2022-12-17 14:42:56 +01:00
acb0ab1cd7
Use TypeTraits in Alignment.h to make static assertions more readable
continuous-integration/drone/push Build is passing
2022-12-17 13:50:27 +01:00
ace674e518
LinkedList: Make sure the contained type inherits from DoublyLinkedListNode<T>
2022-12-17 13:49:47 +01:00
2cbc9fa385
Add some nice TypeTraits
2022-12-17 13:48:55 +01:00
16954695dd
Tell the compiler that string_format is a printf-style function
continuous-integration/drone/push Build is passing
2022-12-17 12:45:26 +01:00
16e00bada0
Add comments to Format.h
continuous-integration/drone/push Build is passing
2022-12-17 12:43:29 +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
48fcb8734a
Give number parsing functions more meaningful names
2022-12-17 12:12:58 +01:00
cf3b2176f0
Implement OwnedStringView::from_string_literal
continuous-integration/drone/push Build is passing
2022-12-17 11:36:16 +01:00
14461c6fe8
Atomic: Add operators += and -=
2022-12-17 10:49:19 +01:00
a16f357ab9
Add an Atomic class
continuous-integration/drone/push Build is passing
2022-12-16 21:15:22 +01:00
da39ba33a9
Move OwnedStringView::operator[] out of line
2022-12-16 20:48:58 +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
42a2c2af49
Add strdup()
2022-12-16 20:37:57 +01:00
e56075fb46
Use nothrow in raw_malloc
2022-12-16 20:36:43 +01:00
345e13965e
Add missing include
...
continuous-integration/drone/push Build is passing
No one was noticing because everyone using OwnedStringView included Result.h before it
2022-12-16 20:27:44 +01:00
4a6c59d519
Make all methods in OwnedStringView const
continuous-integration/drone/push Build is passing
2022-12-16 19:48:22 +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
be22cf6267
Introduce OwnedStringView
...
A managed String which uses RAII to free its contents. It's not a proper string though, since it's read-only.
So it's a StringView... but an owned one.
Can't be copied automatically, must be either moved or copied manually by calling clone() on it.
2022-12-16 18:17:15 +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
32c8869973
Option: Simplify release_value
...
This avoids copying + we don't need to destroy the item if we move it, since it either gets emptied by moving it or doesn't have anything to destroy.
2022-12-16 18:13:40 +01:00
19a4e2ab58
Result, Option: Make sure everything is properly moved
2022-12-16 18:11:17 +01:00
b9f3d3c349
Remove ENONE
...
continuous-integration/drone/pr Build is passing
If you want to return an error without meaning, use Option.
2022-12-08 16:09:33 +01:00
b6173e2b67
LinkedList: Return Option instead of ENONE if no value
2022-12-08 16:09:04 +01:00
406af68a54
Result: Use Option as backend
2022-12-08 16:08:18 +01:00
b58eba63f1
Add a new Option class which behaves like Result, but has no error number, just a value or no value
2022-12-08 16:08:02 +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
1d5d1daa57
Add scope guards
2022-12-08 14:56:11 +01:00
6de7753b4c
Add malloc wrappers
continuous-integration/drone/push Build is passing
2022-12-07 18:17:49 +01:00
757cee4693
Add accessors for when you're sure a linked list is not empty
2022-12-07 16:11:59 +00:00
8da5521273
Add a Stack convenience class
2022-12-07 16:11:59 +00:00
f65ed465c4
Bitmap: Fix crash by attempting to memset -1 bits (UINT64_MAX)
2022-12-07 16:11:59 +00:00
d3458f2f0f
Bitmap: short circuit on 0-byte clears
2022-12-07 16:11:59 +00:00
4fdd1d57f5
Make build-debug.sh also add debug symbols to luna
2022-12-07 16:11:59 +00:00
287c4ab060
Run clang-format
2022-12-07 16:11:59 +00:00
986aa01948
size_t -> usize
continuous-integration/drone/push Build is passing
2022-12-07 17:06:29 +01:00
beab3454b5
kernel: Enable -Wsign-conversion and -Wcast-align
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
ee276a3a35
Add the nodiscard attribute to make and make_array
continuous-integration/drone/push Build is passing
2022-12-07 11:01:45 +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
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
b5c6ae253d
Make LinkedList a lot better
continuous-integration/drone/push Build is passing
2022-12-06 18:41:35 +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
87fb195202
Add DoublyLinkedList data structure
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