a8a64863c8
kernel, libc: Add clock_gettime()
2023-01-07 00:21:08 +01:00
b851dcf9b9
libc: Implement mbstowcs() using Utf8StringDecoder
continuous-integration/drone/push Build is failing
2023-01-06 21:01:37 +01:00
80f5c790f8
Implement string formatting into libc :)
...
continuous-integration/drone/push Build is passing
Of course, using <luna/Format.h> makes it so simple. No need for duplicate code!
2023-01-06 20:15:43 +01:00
a01b56ed39
CString: Support strcpy(), strcat() and strchr()
2023-01-06 16:20:35 +01:00
08608d2344
Depend on libc headers
continuous-integration/drone/push Build is failing
2023-01-06 13:38:48 +01:00
129e3c434a
Switch to C for userspace, with a very bare-bones libc!!
continuous-integration/drone/push Build is failing
2023-01-06 13:31:14 +01:00
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