Drew Galbraith
77bb3acfb4
[zion] Move channel syscalls to new format.
2023-06-20 14:41:44 -07:00
Drew Galbraith
1a70ce4855
[zion] Move memory syscalls to the new format
2023-06-20 14:26:06 -07:00
Drew Galbraith
f755cd38fe
[zion] Move thread syscalls to the new format.
2023-06-20 14:10:28 -07:00
Drew Galbraith
c6dd0bbb0f
[zion] Migrate process syscalls to new format.
2023-06-20 14:01:43 -07:00
Drew Galbraith
a47bac9966
[zion] Dynamically check Capability type.
...
Instead of passing an enum with the capability when creating it, relying
on polymorphism and a template struct tag to determine the object type
at runtime.
This is cleaner and avoids errors where we pass the wrong capability
type with the cap and do a bad cast at runtime.
2023-06-16 14:53:57 -07:00
Drew Galbraith
b4902a79ef
[zion] Add per-process CapabilityTable object
...
Store this information in it's own object to make the API clearer.
2023-06-16 14:25:54 -07:00
Drew Galbraith
6986f534f8
Add a method for blocking threads on ports.
...
Additionally add the first lock class since we are becoming more
concurrent.
2023-06-12 20:56:25 -07:00
Drew Galbraith
0f0e39d1e9
Further parse AHCI information.
...
Send an IDENTIFY command to each drive and set up a hook to handle
interrupts.
2023-06-12 19:20:51 -07:00
Drew Galbraith
3e1e37bf03
Probe RSDP for PCIe Config
2023-06-07 16:24:13 -07:00
Drew Galbraith
add533071b
Use APIC for interrupts rather than PIC.
...
Still rely on the PIT for now rather than the local APIC timer.
2023-06-07 13:40:36 -07:00
Drew Galbraith
81b925eea0
Add a basic IPC setup with Channel Object.
...
Pass a process a channel endpoint on startup that it will use to
get it's initial capabilities.
2023-06-07 08:24:10 -07:00
Drew Galbraith
eb454300e6
Move elf loader into the init loader in the kernel
2023-06-07 00:08:21 -07:00
Drew Galbraith
b06c76e477
Create a MemoryObject class and use it to load programs.
2023-06-06 21:44:10 -07:00
Drew Galbraith
1fda0f3fae
Move VirtualMemory to AddressSpace Object
2023-06-06 20:43:15 -07:00
Drew Galbraith
b5ad454ad1
Move Process & Thread to the object folder.
2023-06-06 20:18:53 -07:00
Drew Galbraith
ef8eb5d993
Add a threading syscall API.
2023-06-06 16:24:03 -07:00
Drew Galbraith
2eefda6114
add a class to allocate and manage user space stacks
2023-05-30 22:35:57 -07:00
Drew Galbraith
f22dd66c8d
Manage KernelStacks separately rather than just allocing bytes.
...
Create a global KernelStackManager that will handle the relevant allocs.
2023-05-30 21:28:44 -07:00
Drew Galbraith
7fe6c24aa5
Add a ProcessManager class to store Process objects.
...
Trying out a new method for exposing global objects directly via a
variable.
2023-05-29 23:35:44 -07:00
Drew Galbraith
629dca278b
Enable the PIC and add a timer.
...
This causes a GP fault after the timer runs for some time.
2023-05-29 21:52:01 -07:00
Drew Galbraith
7184f527a0
Jump to user mode.
...
This instantly creates a page fault as we always map pages with ring 0
permissions.
2023-05-29 13:06:08 -07:00
Drew Galbraith
aefb4f082b
Add a kernel ELF module and load it in a new process.
...
Don't yet jump to userspace.
2023-05-29 00:32:54 -07:00
Drew Galbraith
f86bbe6ea9
Wireframe for syscalls in place
2023-05-18 16:03:09 -07:00
Drew Galbraith
cb41953354
Scheduler with working threads.
...
Currently only one process but it is a start.
2023-05-18 13:24:02 -07:00
Drew Galbraith
960cbf9519
Add Scheduler wireframe.
...
Right now does nothing but has containing classes for process and thread
information.
2023-05-18 12:43:53 -07:00
Drew Galbraith
4380590af2
Add new and delete operator implementations to the kernel heap.
...
For now delete does nothing.
2023-05-18 11:29:44 -07:00
Drew Galbraith
2d719d0443
Add a bootstrap physical memory manager.
...
This will allow the real physical memory manager to use allocations.
2023-05-18 11:00:05 -07:00
Drew Galbraith
0b7e667368
Add a basic kernel heap object.
...
Currently allocation always fails because we don't
have a way to allocate a physical page.
2023-05-18 10:59:39 -07:00
Drew Galbraith
45b5817a36
Recursively map the PML4
2023-05-18 02:00:01 -07:00
Drew Galbraith
b3f8cb9003
Dump the memory map from limine.
...
Also adds the ability to print formatted messages.
2023-05-18 01:16:53 -07:00
Drew Galbraith
9fc1aa15ef
Add an interrupt descriptor table.
...
Set up a very basic handler for divide by zero and
general protection faults.
2023-05-17 22:54:37 -07:00
Drew Galbraith
03fe4d8c2e
Load our own GDT.
...
Replace the GDT from limine with our own.
2023-05-17 21:41:08 -07:00
Drew Galbraith
872e6f3392
Add a debug output utility.
2023-05-17 20:42:59 -07:00
Drew Galbraith
e9705f7579
Barebones Kernel Commit
...
Uses limine to boot off of a disk.
Outputs a character to the debug port.
2023-05-17 20:20:53 -07:00