Bananymous
b3b8376cca
Kernel: Fix PhysicalRange mapping size
2023-10-13 03:45:01 +03:00
Bananymous
9c143d18b9
Kernel: Add temporary terminal output before controlling terminal
...
Starting work on getting this boot on real hardware.
2023-10-13 03:31:36 +03:00
Bananymous
9a6cc0dc2d
Kernel: Check whether ELF address space can be loaded
...
Before reserving address space in SYS_EXEC verify that ELF address
space is actually loadable. For example when trying to execute the
kernel binary in userspace, binarys address space would overlap with
current kernel address space. Now kernel won't crash anymore and
will just send SIGKILL to the process calling exec*().
2023-10-12 22:59:36 +03:00
Bananymous
8c792f9c6d
Shell: Fix parsing $ with unknown character
2023-10-12 22:24:27 +03:00
Bananymous
adc5ff9e99
Kernel: Implement AHCI driver
...
SATA drives can now be used with banan-os. This allows much faster
disk access (writing 10 MiB from 30s to 1.5s). This can definitely
be optimized but the main slow down is probably the whole disk
structure in the os.
AHCI drive is now the default when running qemu.
2023-10-12 21:53:48 +03:00
Bananymous
bde9ff9319
Kernel: Generalize ATA device and cleanup code
2023-10-12 21:35:25 +03:00
Bananymous
75fdf4c3c6
Kernel: Add Timer::ns_since_boot()
2023-10-12 21:16:39 +03:00
Bananymous
b723ed5fd2
Kernel: Add vaddr/paddr conversion functions to DMARegion
2023-10-12 15:20:05 +03:00
Bananymous
89c975350d
Kernel: PCI can now get interrupts for devices
2023-10-11 22:18:58 +03:00
Bananymous
f27974dd3c
Kernel: PCI cleanup PCI::Device API
2023-10-11 21:52:08 +03:00
Bananymous
744ff40ba0
BAN: Optional can now be constructed from another Optional
...
Also fix bug in release_value() where we did not call the
destructor.
2023-10-11 20:10:06 +03:00
Bananymous
d4c9f371a6
Kernel: make DMARegion::create static and fix mapping
2023-10-08 18:18:36 +03:00
Bananymous
2aabf43ace
Kernel: fix some math in physical ranges
...
I allocated 1 bitmap page per 8 data pages. Bitmap page can actually
store 8*PAGE_SIZE data pages.
Also properly set last bits in bitmap. I did not care about endianness
but now we set the bits on unsigned long longs instead of bytes.
2023-10-08 13:25:34 +03:00
Bananymous
a6ca9fd453
Kernel: Implement bare boness DMA Region
...
This does nothing but allocate contiguous physical and virtual memory
and map it as CacheDisable. Also memory is automatically freed RAII style.
2023-10-08 02:57:22 +03:00
Bananymous
799aab02f5
Kernel: Add API for getting contiguous physcial pages
...
This will be used to create DMA regions.
2023-10-08 02:57:22 +03:00
Bananymous
0fae2c7309
Kernel: Rework physical memory allocation
...
PhysicalRange is now much simpler bitmap. This makes expanding
PhysicalRange API much easier.
2023-10-08 02:50:23 +03:00
Bananymous
7ba72b1507
Kernel: Fix PCI BarRegion offsets
...
Calculations accidentally assumed bar registers are 8 byte instead
of 4.
2023-10-08 02:50:23 +03:00
Bananymous
f21d4e794c
Kernel: Rework whole ATA driver structure
...
Make ATA driver more compatible when we are adding SATA support
2023-10-08 02:50:23 +03:00
Bananymous
27eb5af6f0
Kernel: Rework interrupt mechanism
...
All interruptrable classes now inherit from Interruptable which
has methdo handle_irq which is called on a interrupt.
2023-10-05 18:53:45 +03:00
Bananymous
68a913c838
BuildSystem: Don't strip kernel
2023-10-05 18:52:44 +03:00
Bananymous
a084db6817
BuildSystem: Try to set compiler only if it exists
2023-10-05 18:52:05 +03:00
Bananymous
57605c2b3e
meminfo: Print allocated physical memory percentage
2023-10-03 10:39:27 +03:00
Bananymous
1cd99631e1
Shell: source $HOME/.shellrc if found on Shell startup
2023-10-03 10:39:27 +03:00
Bananymous
f67ed9a66e
Shell: Implement sourcing scripts
2023-10-03 10:24:10 +03:00