Stephen Marz
e033feee2b
Documentation says 0x80000, but I left off a zero :( Thanks to QiuhaoLi
2020-03-18 10:41:57 -04:00
Stephen Marz
b39db75cf4
Add fs and minix
2020-03-18 10:40:27 -04:00
Stephen Marz
d6bf3d2685
Remove testing code, change comments
2020-03-16 15:05:04 -04:00
Stephen Marz
40977c2e45
Add global entropy device list
2020-03-16 14:02:28 -04:00
Stephen Marz
4fd36bf898
Move individual chapters, use tags from now on
2020-03-15 20:21:42 -04:00
Stephen Marz
c184aae307
Add rng.rs for ch9 and overall
2020-03-15 20:18:46 -04:00
Stephen Marz
703c2cf5b0
Finish virtio
2020-03-15 20:18:09 -04:00
Stephen Marz
858c838e73
Updates to power of two ring size
2020-03-15 11:11:59 -04:00
Stephen Marz
973ec7449b
Added comments to describe functions and enumerations. Also, assumptions have been spelled out.
2020-03-15 11:09:01 -04:00
Stephen Marz
ea4c8ae9c2
Shortened some code using Rust
2020-03-13 21:45:13 -04:00
Stephen Marz
50df049fbb
I messed up the header size, which is why writes failed
2020-03-13 20:01:02 -04:00
Stephen Marz
a6c0ff96fe
Remove mepc, satp, and pid, we get these from the frame address
2020-03-13 19:38:31 -04:00
Stephen Marz
4487295308
Remove frame extraction
2020-03-13 19:38:06 -04:00
Stephen Marz
c3e7451997
Change trap frame structure to new function, and added quantum multiplier
2020-03-13 19:37:44 -04:00
Stephen Marz
f881eacf26
Remove unused imports, status isn't currently being used in trap, and removed unsafe from trap 7
2020-03-13 19:37:21 -04:00
Stephen Marz
44f2f3acb5
Changed testing apparatus
2020-03-13 19:36:53 -04:00
Stephen Marz
46afb47ab6
changed used ring to be page aligned
2020-03-13 19:36:34 -04:00
Stephen Marz
0954532a5b
changed used ring to be page aligned
2020-03-13 19:36:24 -04:00
Stephen Marz
cfbc4b516a
Remove block::init, it's not necessary anymore
2020-03-13 15:33:37 -04:00
Stephen Marz
8f55a9a6ec
Remove reference when using ref
2020-03-13 15:31:47 -04:00
Stephen Marz
67f30af9a9
Clean up interrupt code
2020-03-13 13:23:55 -04:00
Stephen Marz
cbc3622c8e
Remove debugging output
2020-03-13 13:16:43 -04:00
Stephen Marz
497abf1660
Added comments, will need to centralize the read/write functions
2020-03-13 13:04:41 -04:00
Stephen Marz
5e0be36d45
My fault, the mut's in let Some don't actually do anything.
2020-03-13 12:58:16 -04:00
Stephen Marz
efb26d6aa3
Add cargo
2020-03-13 11:47:11 -04:00
Stephen Marz
08b227e223
Add ignore
2020-03-13 11:46:13 -04:00
Stephen Marz
9524954eb2
Remove unnecessary code
2020-03-13 11:28:39 -04:00
Stephen Marz
eec1047ac9
Document how to get the index from mmio address
2020-03-13 11:23:08 -04:00
Stephen Marz
5b2e780484
move index so that it has more time to write
2020-03-13 11:17:32 -04:00
Stephen Marz
9623de2e50
Added PLIC handler to delegate to virtio. Virtio now delegates to the virtio device type to handle PLIC interrupts. We now handle interrupts from VirtIO as well as free memory associated with it.
2020-03-13 11:15:12 -04:00
Stephen Marz
016520a354
Support new block list
2020-03-12 20:44:53 -04:00
Stephen Marz
72563c3161
Switch to a static block list. This will make it easier to determine
...
which drive we're talking about. 1 is 0x1000_1000 ... 8 is 0x1000_8000
2020-03-12 20:44:28 -04:00
Stephen Marz
93969a2bf5
Added testing first 10 bytes of the hdd.dsk file
2020-03-12 20:10:36 -04:00
Stephen Marz
58efe7e3ac
Added block request read. Quite dirty, but for now it works
2020-03-12 19:47:58 -04:00
Stephen Marz
552595d901
Fixed to use new scheduler return values
2020-03-12 13:56:21 -04:00
Stephen Marz
7b038cdc24
Right now, we return a pointer by usize. This is not good programming in
...
Rust. Instead, the scheduler needs to be modified to return a process
structure's reference. Then, we can extract the fields and then switch.
However, this will require us to have to change how the PROCESS_LIST
works. Since it uses move constructs, we cannot move a process out of it
when we replace the process list.
2020-03-12 13:55:11 -04:00
Stephen Marz
d9b1743698
Changed scheduler to only return the frame and satp register. The mepc
...
is now stored in the trap frame.
2020-03-12 13:54:39 -04:00
Stephen Marz
c6b261bf20
Added comments and reformatted using rustfmt
2020-03-12 13:36:50 -04:00
Stephen Marz
bc9158bd23
Changed the queue size to only take one page.
2020-03-12 13:36:18 -04:00
Stephen Marz
f5ce75dbe8
Finished setup, rearranged queue creation and testing bits. This makes it so we don't have to free anything if we fail after setting up the queue.
2020-03-12 13:36:08 -04:00
Stephen Marz
a32c6fc995
Updates
2020-03-11 17:09:09 -04:00
Stephen Marz
46a6296dec
Added block specific routines and stub setup routine for block devices
2020-03-10 19:29:29 -04:00
Stephen Marz
39cb72ad9f
Added virtio probing to kinit
2020-03-10 17:17:12 -04:00
Stephen Marz
a29698221d
Added virtio structures and stubs for setting up devices
2020-03-10 17:16:57 -04:00
Stephen Marz
d403ae8b7b
Add hdd.dsk to ignore
2020-03-10 17:16:44 -04:00
Stephen Marz
3ffb53405d
Add many virtio devices
2020-03-10 17:16:13 -04:00
Stephen Marz
795e7945f8
Load block device through make run
2020-03-10 16:51:22 -04:00
Stephen Marz
d44f729957
Split CTX switch time and frequency and also use build_satp for switching to user process
2020-03-10 15:35:21 -04:00
Stephen Marz
f2b1e2018a
Moved PC to trap frame so we don't restart the function
2020-03-10 14:55:26 -04:00
Stephen Marz
2984472493
Added chapter 9
2020-03-10 13:52:09 -04:00