Commit Graph

42 Commits

Author SHA1 Message Date
c422d11682
kernel: Start working on a VFS implementation using OOP and SharedPtr 2023-02-27 15:22:24 +01:00
794567327f
kernel, luna: Port non-VFS changes over from pull request #22
All checks were successful
continuous-integration/drone/push Build is passing
OwnedPtr, SharedPtr: Add operator bool
Option, Result: Make try_move_value() non-const since it modifies the Option
kernel: Switch to a stack we control for the main task as soon as we leave early boot
Heap: Fix GPF caused when making many small allocations
Heap: Avoid accessing a block after it's potentially deleted
luna: Skip UBSAN.cpp in CMakeLists as that's not implemented yet
luna: Use spinlocks in the heap implementation
kernel, luna: Move Spinlock.h to luna
Option: Use __builtin_launder to ensure that the compiler doesn't label this as UB
SharedPtr: Implement make_shared using adopt_shared
SharedPtr: Delete ptr on failure in all adopt_shared* functions
2023-02-25 17:09:03 +01:00
6677c643a5
kernel: Start scanning the PCI bus for devices
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-23 20:07:17 +01:00
7f8a8cdcaf
kernel, libc: Add an usleep() system call and use that to implement usleep() and sleep() in libc
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-22 15:00:20 +01:00
a6974b605e
tools+CMake: Prefix all environment variables with LUNA_
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-21 22:44:16 +01:00
139c0b5eb1
Kernel: Make a UserVM wrapper around Bitmap and use that to allocate user VM
This lets us allocate more than one page of memory from the user side.
2023-01-13 19:05:20 +01:00
7462b764d8
Kernel: Add __cxa_atexit iomplementation 2023-01-13 18:56:05 +01:00
586ca19b62
Add a VERY BASIC and hacky way of allocating memory from userspace
All checks were successful
continuous-integration/drone/push Build is passing
Only supports one-page allocations and doesn't have libc wrappers, which means it has to be invoked using syscall().
2023-01-11 23:02:42 +01:00
4287ec6cb0
Bitmap: Introduce a new method 'find' and use it in MM and KernelVM
All checks were successful
continuous-integration/drone/push Build is passing
This method looks for the first bit with a value, optionally from a starting index, and returns its index.
This should be (haven't benchmarked) way faster than the manual way,
AKA what MM and KernelVM were doing.

This is due to this method using bit and byte manipulation tricks instead of just calling get() until getting the desired result :)
2023-01-09 17:59:52 +01:00
7e377ef712
Implement printf()
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-07 01:49:26 +01:00
a8a64863c8
kernel, libc: Add clock_gettime() 2023-01-07 00:21:08 +01:00
fd8a0175d9
Add a syscall infrastructure (our baby program can print to the console now!)
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-05 22:39:56 +01:00
f2cc797599
Add a simple ELF loader
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-23 13:09:21 +01:00
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
95b0091622
Split off arch/x86_64/CPU.cpp into various files
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-17 15:45:06 +01:00
f97515bd7e
Kernel: Add Spinlock and LockedValue<T> 2022-12-17 10:55:54 +01:00
6cee208e62
Kernel: Enable -Wsign-conversion
All checks were successful
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
13f5d09cfd Add a Scheduler!! 2022-12-07 16:11:59 +00:00
d445b29477
Add a virtual memory allocator for the kernel 2022-12-05 20:36:24 +01:00
5f6c48bd12
Use a friendlier way of iterating over the memory map 2022-12-04 15:45:13 +01:00
b8239698db
Add descriptions in CMakeLists 2022-12-04 12:47:08 +01:00
5d9c50eb12 Make build-debug.sh work 2022-12-04 10:27:25 +01:00
1d7b9260c3 Add config.h for version information 2022-12-03 17:25:25 +01:00
9f5fb547f7 Add logging system :) 2022-11-30 13:29:28 +01:00
a58b60d0cf Add a framebuffer text renderer 2022-11-20 17:55:22 +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
83bcac7a16 Kernel: Introduce a timer interface 2022-11-19 20:01:01 +01:00
424b069d55 Kernel: Start the call stack with a null RBP on x86_64 2022-11-19 18:38:32 +01:00
883a1da0d7 More indentation in CMakeLists.txt 2022-11-19 18:00:45 +01:00
a44e2f41fe Cleanup kernel/CMakeLists.txt 2022-11-19 17:59:39 +01:00
83e6bd1322 Make the build system more platform-agnostic 2022-11-19 17:46:53 +01:00
3cdf224b90 Remove useless files now that functions are out of line 2022-11-19 15:46:46 +01:00
dadc3e570b Move a few functions out of line 2022-11-19 15:43:09 +01:00
603ff46d8c Add a format implementation 2022-11-19 12:30:36 +01:00
7fc5a6b753 Make kernel rodata and data not executable 2022-11-16 20:02:04 +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
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