1
0
mirror of https://github.com/sgmarz/osblog.git synced 2024-11-27 20:03:32 +04:00
Commit Graph

314 Commits

Author SHA1 Message Date
Stephen Marz
080a529f01 Reading up to indirect pointers 2020-04-25 15:15:25 -04:00
Stephen Marz
c2fb6cf90d Fix system calls. Size always comes first now, followed by offset. 2020-04-25 14:16:03 -04:00
Stephen Marz
787f886b6f Clean up code, added deleting a process if a user process causes a fault. 2020-04-24 22:19:41 -04:00
Stephen Marz
bb74161466 Remove use 2020-04-24 19:58:29 -04:00
Stephen Marz
2eb8acabd7 Remove syscall_exit, kernel processes will return via RA 2020-04-24 19:55:49 -04:00
Stephen Marz
71702acd43 Added comments and formatted. 2020-04-24 19:30:00 -04:00
Stephen Marz
0d924e6fab Fixed not waking up the process who made the request. 2020-04-24 19:26:44 -04:00
Stephen Marz
4c31f8c563 Add inode number to fs_read 2020-04-24 19:22:27 -04:00
Stephen Marz
a113db700a Added RA to call syscall_exit for kernel processes. 2020-04-24 19:16:45 -04:00
Stephen Marz
8ae5ebb085 Added syscall_block_read and syscall_fs_read. 2020-04-24 18:56:32 -04:00
Stephen Marz
8081863709 Fix inits loop. We will use WFI to avoid hogging resources. 2020-04-24 18:48:19 -04:00
Stephen Marz
e0a8be5522 Don't let init sleep. This will cause us to hang in the scheduler. 2020-04-24 18:47:49 -04:00
Stephen Marz
58ab3f3b6f Don't let init sleep. This will cause us to hang in the scheduler. 2020-04-24 18:46:31 -04:00
Stephen Marz
73636c1de1 Updates to add a process for a file system read in the system call. 2020-04-24 18:37:48 -04:00
Stephen Marz
2e48b86656 Auto-drop processes, and added delete process. 2020-04-24 15:22:57 -04:00
Stephen Marz
a60d84ed98 Start adding block device stuff and file system stuff. Added test for block driver as a process. 2020-04-24 14:39:56 -04:00
Stephen Marz
599627b74a Updated to allow for system calls that change process state 2020-04-24 14:39:33 -04:00
Stephen Marz
e39f6b71c5 Added information for release builds 2020-04-21 20:31:27 -04:00
Stephen Marz
625df1cf46 Added testing shell, no testing, yet. 2020-04-21 20:30:09 -04:00
Stephen Marz
da92f55d1b Added codegen-units to avoid SEGV 2020-04-21 20:27:13 -04:00
Stephen Marz
8b2b670deb Add testing shell 2020-04-21 20:25:39 -04:00
Stephen Marz
b3e99659de Initial fix 2020-04-21 20:23:39 -04:00
Stephen Marz
f9572be05a Add options in Cargo.toml for lto and optimizer 2020-04-21 20:21:56 -04:00
Stephen Marz
1ae7b115f7 Let's try BUILD.md this way 2020-04-21 20:14:20 -04:00
Stephen Marz
e6d9807c11 Short instructions for building. 2020-04-21 20:13:51 -04:00
Stephen Marz
d1dc1d7b32 Get rid of Makefile, use cargo build and cargo run now. 2020-04-21 19:51:30 -04:00
Stephen Marz
1c329244ce Use Rust out-of-the-box now that it has full support for RISC-V. We need
cargo-binutils and so forth to run these. But, for now all we need is to
run cargo run and it should invoke qemu for us based on .cargo/config
2020-04-21 19:49:23 -04:00
Stephen Marz
86018d30a3 Added assembly module so that Rust will import RISC-V assembly code
without using GNU tools
2020-04-21 19:48:19 -04:00
Stephen Marz
aba5fe0e24 Use cargo to build out-of-the-box here. 2020-04-21 19:47:57 -04:00
Stephen Marz
abd3048afa Use Rust's global_asm to import assembly files 2020-04-21 19:47:38 -04:00
Stephen Marz
4767b6d698 Fixed used index and available index. These are modded by the queue size in the ring only. The index continues to increase until it naturally wraps at the data size 2020-04-12 21:37:06 -04:00
Stephen Marz
fb3a9ccdae Test block device 2020-03-31 11:41:32 -04:00
Stephen Marz
ce5e8b17b2 Fixed C++ isms when translating to Rust 2020-03-28 21:06:31 -04:00
Stephen Marz
55bcc79736 Added MmioDevice structure to put a structure to the MMIO virtio address space. 2020-03-28 21:05:45 -04:00
Stephen Marz
d2ab4a1ad7 Rename inode to node for a more generic filesystem. 2020-03-18 22:37:12 -04:00
Stephen Marz
61d8ace581 Added more FS stuff. 2020-03-18 22:01:05 -04:00
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
Stephen Marz
d154e86d9e Added Cargo.lock 2020-03-10 13:51:44 -04:00
Stephen Marz
08c5ddafc2 Updated comments and removed debugging code 2020-03-10 13:50:08 -04:00
Stephen Marz
2bcf1bb000 Change cycle time 2020-03-10 13:01:32 -04:00
Stephen Marz
b27784ed52 Separate sched and switch_to_user 2020-03-10 12:59:36 -04:00
Stephen Marz
cb54d823d2 Fire off the first CTX switch timer! 2020-03-10 12:46:52 -04:00
Stephen Marz
429b056921 Updates to system call. Change stack pointer for MMU 2020-03-10 12:44:08 -04:00
Stephen Marz
88c672171e Fixed trap. Forgot to reset mtvec in switch_to_user 2020-03-10 12:41:16 -04:00
Stephen Marz
f2f5c855cf M 2020-03-10 11:21:15 -04:00
Stephen Marz
57145beefd Fixed trap handler, load kernel stack from trap, fixed init, map a larger swath of memory for init. 2020-03-10 11:20:00 -04:00
Stephen Marz
e6ccf15bda Added .gitignore to make this doable 2020-03-09 17:51:32 -04:00
Stephen Marz
ee92f8e123 Ugh. Remove target 2020-03-09 17:51:10 -04:00
Stephen Marz
b139313874 Added chapter 8 2020-02-22 08:53:59 -05:00
Alex Chi
2474df886c
Add data flush in uart put function 2020-02-03 10:33:00 +08:00
Stephen Marz
4ffb6e3e3b Added syscall and shell scheduler 2020-01-18 20:22:47 -05:00
Stephen Marz
e8e379e557 Updates to ch6 -- post ready. 2019-12-08 14:30:41 -05:00
Stephen Marz
eb0c943a71 Updates to process. 2019-12-07 22:04:13 -05:00
Stephen Marz
c1e247cad5 Move lots of code to support user processes. 2019-12-07 13:59:39 -05:00
Stephen Marz
f8c2faa3ae Updates to process code. 2019-12-05 19:52:02 -05:00
Stephen Marz
fa82110eac Added adjustment constants. 2019-11-28 12:27:13 -05:00
Stephen Marz
ba678d2252 Fixed HEAP map bug. 2019-11-28 12:22:42 -05:00
Stephen Marz
b723763292 Free root table. 2019-11-28 12:05:24 -05:00
Stephen Marz
b61b3ebbf5 Use zalloc to clear page tables. 2019-11-28 12:04:21 -05:00
Stephen Marz
c99bff8944 Use zalloc to clear page tables. 2019-11-28 12:02:37 -05:00
Stephen Marz
c5179e60d6 Added virtual memory allocation. 2019-11-28 12:01:52 -05:00
Stephen Marz
26e37d33d3 Added comments to process 2019-11-27 23:42:50 -05:00
Stephen Marz
d0c3c9ff6e Add Process structure and routines. 2019-11-27 17:02:07 -05:00
Stephen Marz
4ec1301e8f Added chapter 6 2019-11-27 12:59:29 -05:00
Stephen Marz
b9158e5ef7 Added comments for plic. 2019-11-18 19:30:19 -05:00
Stephen Marz
5ca14d6e65 Added comments, moved UART 2019-11-18 19:21:32 -05:00
Stephen Marz
61bb8f3a43 Added comments 2019-11-18 19:19:05 -05:00
Stephen Marz
7faf580765 Added PLIC 2019-11-18 19:14:16 -05:00
Stephen Marz
fb86ff06da Added PLIC 2019-11-18 19:14:08 -05:00
Stephen Marz
03ff50ef30 Added PLIC 2019-11-18 19:13:52 -05:00
Stephen Marz
b3cd92dc41 Added comments 2019-11-10 09:20:40 -05:00
Stephen Marz
e2dfa8661f Remove public constants 2019-11-04 15:35:24 -05:00
Stephen Marz
f7547d5c59 Add comments about pointer arithmetic. 2019-11-04 15:27:56 -05:00
Stephen Marz
783cdcfc3b Remove if statement--let boolean condition stand 2019-11-04 15:26:47 -05:00
Stephen Marz
0c71107da8 Add PLIC functions 2019-11-04 15:25:27 -05:00
Stephen Marz
49d8d6666a Start chapter 5 2019-11-04 13:14:28 -05:00
Stephen Marz
f13948d5c0 Fixed typos, updates. 2019-11-04 13:04:00 -05:00
Stephen Marz
6cbf12ada9 Updates to pages 2019-11-03 21:26:39 -05:00
Stephen Marz
6cc5cba4b8 Added return_pc as mutable 2019-11-03 21:23:30 -05:00
Stephen Marz
07dffe1823 added ecall printf 2019-11-03 21:21:43 -05:00
Stephen Marz
175c4fc7eb Added timer reset in async 7 2019-11-03 21:17:29 -05:00
Stephen Marz
4211090d17 Fixed typos 2019-11-03 19:08:35 -05:00
Stephen Marz
a76745278e Fixed unit type 2019-11-03 19:07:42 -05:00
Stephen Marz
ac5e41ceb4 Update comments 2019-11-03 19:06:38 -05:00
Stephen Marz
79a6500c0b Rename stat to status 2019-11-03 19:03:10 -05:00
Stephen Marz
5a8523099a Added epc to trap 3 and 11 2019-11-03 19:00:46 -05:00
Stephen Marz
efaecf96d6 Fixed typo 2019-11-03 19:00:24 -05:00
Stephen Marz
ee5094d821 Added shell traps 2019-11-03 19:00:14 -05:00
Stephen Marz
ccad138c03 Changed trap to machine-only 2019-11-03 18:56:43 -05:00
Stephen Marz
d8b0313842 Remove s_trap in ASM 2019-11-03 18:41:21 -05:00
Stephen Marz
bb64443076 Remove s_trap 2019-11-03 18:41:07 -05:00
Stephen Marz
aaad7c1cec Added comments and updates to traps 2019-11-02 02:44:40 -04:00
Stephen Marz
6f333bd8f0 Ran rustfmt 2019-10-27 16:03:37 -04:00
Stephen Marz
0b2506e8e5 Updates for ch4 2019-10-27 16:03:12 -04:00
Stephen Marz
b95aacadb4 Changed SATP fence functions 2019-10-25 18:39:59 -04:00
Stephen Marz
7e3d97b908 Fixed mapping kernel stack 2019-10-21 13:19:52 -04:00
Stephen Marz
ce0cc7df11 Fixed mapping kernel stack 2019-10-21 13:19:13 -04:00
Stephen Marz
eb2b9a6aca Fixed stack location, mapping 2019-10-14 22:15:03 -04:00
Stephen Marz
fb4f3eea91 Fixed stack location, mapping 2019-10-14 22:12:44 -04:00
Stephen Marz
9baea58551 Added cpu.rs for CPU routines. Changed context-switch code. 2019-10-14 21:23:20 -04:00
Stephen Marz
731e428f66 Added timer reset in trap 2019-10-14 16:22:13 -04:00