Commit Graph

126 Commits

Author SHA1 Message Date
ad0f6546d7
Add a global initrd TarStream to make the initial ramdisk accessible everywhere
All checks were successful
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
5b72144fac
Add a handy consume() method to LinkedList
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-19 12:35:08 +01:00
92a7004c2f
Move the reaping logic to Scheduler 2022-12-19 12:24:15 +01:00
a63146a798
Show the date and time of build :)
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-18 18:51:25 +01:00
751377de0a
Scheduler: Make it possible for a thread to stop existing
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-18 18:43:34 +01:00
6c3b7672a0
Kernel: Demo the initrd using TarStream
All checks were successful
continuous-integration/drone/push Build is passing
Yes, we're using the physical address. Not optimal, this is only for demo purposes.
2022-12-18 16:39:35 +01:00
f77126768f
Improve message 2022-12-17 13:48:22 +01:00
6e5d2b5335
Thread: Make g_next_id atomic 2022-12-17 10:50:49 +01:00
cedcfa9c63
Improve cleanup on MemoryManager failure + add methods that use KernelVM
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-16 19:36:38 +01:00
41b3c8adb2
Convert to_dynamic_unit to OwnedStringView and rename the old variant to to_dynamic_unit_cstr
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-16 18:18:24 +01:00
d93d95f23c Add sleeping mechanism 2022-12-07 16:11:59 +00:00
f169718a4b Initialize and demo the scheduler 2022-12-07 16:11:59 +00:00
287c4ab060 Run clang-format 2022-12-07 16:11:59 +00: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
0a296413e6
It's not worth it aborting when failing to determine CPU name 2022-12-04 15:55:12 +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
1d7b9260c3 Add config.h for version information 2022-12-03 17:25:25 +01:00
9c9cb6a05a oopsie 2022-11-30 17:29:18 +01:00
2bc99f2e6e Make log __attribute__(format), so the compiler can warn us of bad format strings 2022-11-30 17:28:46 +01:00
985d45ddfb Switch to logging functions everywhere 2022-11-30 17:16:36 +01:00
fe47e0d5cb Clean init() up 2022-11-30 16:30:42 +01:00
9f5fb547f7 Add logging system :) 2022-11-30 13:29:28 +01:00
f1756e6f58 Add unit formatting 2022-11-30 12:42:11 +01:00
35b7194fb7 Move initialization into an init() function returning Result<void> so we can use TRY
And remove a lot of testing code as well.
2022-11-20 17:56:07 +01:00
d54c882c63 Add new/delete-like functions but with Results 2022-11-20 15:48:08 +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
d96cb73995 Rename physical "pages" to "frames"
AFAIK, this is the proper naming scheme. "Pages" are virtual, and "frames" physical.
2022-11-19 22:27:08 +01:00
83bcac7a16 Kernel: Introduce a timer interface 2022-11-19 20:01:01 +01:00
70c6b78e35 Organize source tree 2022-11-19 17:59:49 +01:00
102eabcb4b Do some more formatted logging 2022-11-19 17:52:24 +01:00
4ebf244d3b Support printing some integers in output_integer 2022-11-19 13:15:13 +01:00
603ff46d8c Add a format implementation 2022-11-19 12:30:36 +01:00
109de54822 Provide stubbed handlers for many more x86 exceptions
I am now officially a big-boy OS developer, I read the Intel manuals for this!! (Not that the OSDev wiki doesn't have the information, but it was missing descriptions for some more obscure exceptions)
2022-11-18 20:51:25 +01:00
7f15ba0ac5 Add some interrupt handling 2022-11-16 17:37:18 +01:00
c9feb11366 Introduce a check() method (like assert() but always on) 2022-11-15 19:36:50 +01:00
c319336e3d Add a CPU interface 2022-11-15 19:10:32 +01:00
ae235e5538 MMU: unmap and remap for x86_64 2022-11-13 16:51:21 +01:00
d6c56fb512 Mapping finally works!! 2022-11-13 16:31:32 +01:00
4c4f72b865 More MMU stuff, but writing still fails 2022-11-13 15:33:53 +01:00
705c2747de Add memory manager 2022-11-13 14:29:15 +01:00
6b95307b54 Add init 2022-11-13 12:20:53 +01:00
ffbe5260a5 Add Framebuffer stuff 2022-11-13 11:25:15 +01:00
82c2381ac9 Serial printing!! 2022-11-13 10:30:10 +01:00
cf758fdfdc Initial commit :) 2022-11-13 10:09:09 +01:00
3451d50a37 Try building a tmpfs, but weird stuff happens 2022-11-12 18:13:41 +01:00
11ee01f269 Kernel: Remove "checkpoint logging" in main.cpp 2022-11-12 12:55:47 +01:00
60bd8d9418 Kernel: Add an explanatory comment to the end of _start() 2022-11-09 15:58:00 +01:00
1ea216dfd1 Kernel: Rename assert.h to ensure.h
The macro is named "ensure", the header file should reflect that.
2022-11-09 15:28:35 +01:00
c604c074a1 Kernel: Rename ASSERT() to ensure()
Doesn't get stripped on release builds, so it shouldn't be named assert.
2022-11-02 19:38:15 +01:00