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
69c7e6c390 Reformatted 2020-05-15 11:00:51 -04:00
Stephen Marz
e1b2150f1b Reduce stack size to 5 pages 2020-05-15 10:54:02 -04:00
Stephen Marz
f8fad1804f Updated file string to avoid creating strings twice in test. 2020-05-15 10:40:37 -04:00
Stephen Marz
5b5e5d9e2b Fix warnings 2020-05-15 10:37:40 -04:00
Stephen Marz
6367e064cf Reworked file system, still much to do, however, now we can get a file by its name instead of inode number. 2020-05-15 10:34:37 -04:00
Stephen Marz
ea33bfe629 Added starting point for GPU code. 2020-05-15 10:34:22 -04:00
Stephen Marz
723963e1ec Resolved 2020-05-01 19:11:42 -04:00
Stephen Marz
21f16b4754 Resolved 2020-05-01 19:10:56 -04:00
Stephen Marz
6cd64c84bf Do not spin lock in an interrupt context, and also add feedback to the caller. 2020-05-01 19:02:58 -04:00
Stephen Marz
fe5a909335 Create a system call to add a process to prevent data race with the process list. 2020-05-01 18:59:38 -04:00
Stephen Marz
30fcd7894a Change lock to try_lock to better align with Rust's verbiage 2020-04-27 09:46:59 -04:00
Stephen Marz
d49ea6e040 Changed formatting settings. 2020-04-26 22:12:00 -04:00
Stephen Marz
532b246f7b Added locking to the scheduler. Since this is invoked so often, it causes a race with the test_elf process. 2020-04-26 21:08:29 -04:00
Stephen Marz
ef0997be74 Add documentation for Mutex 2020-04-26 20:28:20 -04:00
Stephen Marz
a1f9d2c6cd Add Mutex to process list. 2020-04-26 20:11:01 -04:00
Stephen Marz
03018cb55f Removed warnings 2020-04-26 15:55:22 -04:00
Stephen Marz
7dfe0b8182 Run cargo fix 2020-04-26 15:53:26 -04:00
Stephen Marz
3d43bbd93c asm is deprecated in Rust as my compiler warned me. So, let's switch to llvm_asm 2020-04-26 15:52:08 -04:00
Stephen Marz
591f0fdff8 Get rid of useless header. 2020-04-26 14:58:28 -04:00
Stephen Marz
29100f10ae Updated comments 2020-04-26 14:05:50 -04:00
Stephen Marz
af29a0d267 Removed make_hdd.sh, it stores random bytes, now we have a filesystem 2020-04-26 13:55:08 -04:00
Stephen Marz
d62d3f3816 Added more rigorous test, fixed bug in ELF loader 2020-04-26 09:26:41 -04:00
Stephen Marz
bc6ef9d689 Fixed ELF loader and added offset. 2020-04-26 09:19:07 -04:00
Stephen Marz
8f61253aea Removed old code and added comments. 2020-04-26 08:51:25 -04:00
Stephen Marz
cc3b78973c Rearranged code, added comments. 2020-04-26 08:43:03 -04:00
Stephen Marz
42c14bf930 Check and use permission bits in ELF for user pages. 2020-04-26 08:40:43 -04:00
Stephen Marz
fa1a728bd9 Changed to run test_elf for ELF files 2020-04-26 08:34:00 -04:00
Stephen Marz
074dc9547a Now we read ELF files instead of raw binaries 2020-04-26 08:33:49 -04:00
Stephen Marz
de97ebf12d Added ELF structures for reading ELF files. 2020-04-26 08:33:25 -04:00
Stephen Marz
06894d3aff Move BlockBuffer into fs. 2020-04-26 07:12:38 -04:00
Stephen Marz
25009aaa3c Fixed bug in locating the inode. 2020-04-26 07:12:27 -04:00
Stephen Marz
fac882ea73 Clean up scheduler code. 2020-04-25 23:27:00 -04:00
Stephen Marz
fd9c9449b0 Allow sleeping processes that are awoken to immediately execute. 2020-04-25 23:26:14 -04:00
Stephen Marz
60edb9f72a Remove the dumb done flag. 2020-04-25 23:24:55 -04:00
Stephen Marz
58b73e2208 Added tons of comments. 2020-04-25 22:25:32 -04:00
Stephen Marz
b8029e76ac Make helloworld.cpp print a pointer so we can see how we directly affect
the stack.
2020-04-25 21:44:11 -04:00
Stephen Marz
f771883cb0 Added satp_fence. Probably don't need this since we don't reuse pids. 2020-04-25 21:44:05 -04:00
Stephen Marz
eab4a20a61 Added calculations to helloworld 2020-04-25 21:35:32 -04:00
Stephen Marz
0c649f5370 Change wording of helloworld.cpp so it's recognizable when printed to the screen. 2020-04-25 21:24:21 -04:00
Stephen Marz
1627cc7733 Read and start a process...Added userspace library...will switch this to newlib later. 2020-04-25 21:23:00 -04:00
Stephen Marz
cbff6afeca Added comments. 2020-04-25 19:51:27 -04:00
Stephen Marz
cb06702afa Act more like Rust by adding _mut() for those functions that return mutable references or pointers. 2020-04-25 19:36:58 -04:00
Stephen Marz
e5f3eb7f6b Removed mapping the kernel memory into a process' virtual address space. 2020-04-25 19:34:20 -04:00
Stephen Marz
84e5126d29 Added formatting, made syscall.rs clearer to read. 2020-04-25 18:48:23 -04:00
Stephen Marz
056ef5bb2d Added dump_registers as syscall 1--for debugging purposes. 2020-04-25 18:25:18 -04:00
Stephen Marz
d86c65a380 Added comments and removed llvm_asm -- it looks like I'll have to use this in the future 2020-04-25 17:34:06 -04:00
Stephen Marz
018faea21e Check for a 0 zone before adding to blocks seen. 2020-04-25 16:47:13 -04:00
Stephen Marz
3eb61ad188 Remove redundant variable 2020-04-25 16:41:43 -04:00
Stephen Marz
bb4e2d118a Minix reads Direct, Indirect, Doubly-indirect, and Triply-indirect zones 2020-04-25 16:39:50 -04:00
Stephen Marz
0de9b23b17 Change test and added comments 2020-04-25 16:06:29 -04:00
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