1
0
mirror of https://github.com/rcore-os/rCore.git synced 2024-12-04 21:43:29 +04:00
Commit Graph

123 Commits

Author SHA1 Message Date
WangRunji
6d78206f77 impl finding free area for mmap 2019-02-26 00:46:25 +08:00
WangRunji
ca45f8f152 fix check user ptr in syscalls 2019-02-22 16:30:56 +08:00
Jiajie Chen
8313b8854e cherry-pick virtio improvement from lab8-rv32
Move mandelbrot to test mod, cleanup virtio feature negotiation and add addr2line script to Makefile

Implement full virtqueue operations, virtio input driver

Use new virtqueue implementation for virtio net driver

Implement virtio blk device support and use it instead of memory sfs when available

fix dirty hack for virtio_blk
2019-02-16 16:52:11 +08:00
WangRunji
fc8888db72 update for new paging mechanism on riscv. move kernel va to 0x(ffffffff)c0000000. 2019-01-31 23:20:21 +08:00
WangRunji
047f4ffdcc cherry-pick jiegec's work (#3) from lab8-rv32: virtio drivers, network stack
Read and parse dtb upon boot

Implement virtio net device detection

Negotiate feature bits for virtio-net

Read MAC address from virtio-net device and detect virtqueues

Receiving from virtio net device is working for the first time

Implement driver interface and interrupt handling routines

Rearrange drivers into upper directory

Implement initial support for processing arp request and reply packet

Refactor MAC address and IPv4 address into structs, and implement ICMP echo reply

Fix typos

Implement initial support for virtio gpu driver

Complete first working version of virtio gpu driver with mandelbrot example

Use smoltcp and implement a udp and tcp server on top of it

Cleanup virtio net code
2019-01-23 22:28:45 +08:00
WangRunji
2d5178d0b7 rename ucore to rcore 2019-01-03 21:26:50 +08:00
WangRunji
61dfcb5558 Merge remote-tracking branch 'equation314/arch-aarch64' into merging
# Conflicts:
#	kernel/Makefile
#	kernel/src/arch/aarch64/board/raspi3/irq.rs
#	kernel/src/arch/aarch64/memory.rs
#	kernel/src/arch/riscv32/paging.rs
#	kernel/src/arch/x86_64/paging.rs
2019-01-03 18:21:13 +08:00
WangRunji
33eaded142 Merge remote-tracking branch 'bpc/user-lib-bin' into merge-1228
# Conflicts:
#	kernel/src/arch/riscv32/compiler_rt.c
#	kernel/src/arch/riscv32/consts.rs
#	kernel/src/arch/riscv32/context.rs
#	kernel/src/arch/riscv32/io.rs
#	kernel/src/arch/riscv32/memory.rs
#	kernel/src/arch/riscv32/paging.rs
#	user/ucore-ulib/src/syscall.rs
2018-12-28 17:41:21 +08:00
WangRunji
a852c96136 Merge branch 'master' into rust-rv64
# Conflicts:
#	crate/memory/src/memory_set.rs
#	kernel/src/arch/riscv32/compiler_rt.rs
#	kernel/src/arch/riscv32/memory.rs
#	kernel/src/arch/riscv32/paging.rs
#	kernel/src/memory.rs
#	kernel/src/process/mod.rs
2018-12-28 16:55:09 +08:00
dzy
21adebb203 run until ms.token() 2018-12-26 14:56:13 +08:00
dzy
0dbffbc0fa temporary 2018-12-26 00:12:10 +08:00
equation314
aa5bd3041b Merge branch 'master' into arch-aarch64 2018-12-20 23:07:16 +08:00
Ben Pig Chu
07b8a063ec maually remove warning, pt2 2018-12-18 12:53:56 +08:00
Ben Pig Chu
1ca2bde069 maually remove warning, pt1 2018-12-17 23:54:13 +08:00
equation314
b5cc79d1b2 modify mmio() & set_mmio() in PageEntry 2018-12-17 14:28:51 +08:00
equation314
5987c2068b aarch64/fb: remap framebuffer base address 2018-12-16 22:26:04 +08:00
WangRunji
9b0b0064d0 Merge remote-tracking branch 'equation314/arch-aarch64' into dev
# Conflicts:
#	kernel/src/arch/aarch64/memory.rs
#	kernel/src/arch/aarch64/paging.rs
#	kernel/src/process/context.rs
2018-12-15 20:33:25 +08:00
WangRunji
557f021c08 fix DelayHandler & MemoryAttr 2018-12-14 02:31:46 +08:00
WangRunji
ff806d4465 move common codes to InactivePageTable trait 2018-12-08 12:50:50 +08:00
WangRunji
102866bcf9 introduce MemoryHandler and refactor MemorySet. temporary disable swap.
This is a manual rebase of LCY's code
2018-12-08 00:29:55 +08:00
equation314
aa5e7a4e6f remove #![feature(extern_crate_item_prelude)] 2018-12-03 17:22:11 +08:00
WangRunji
2afe8c731e Merge remote-tracking branch 'equation314/arch-aarch64' into dev
# Conflicts:
#	crate/memory/src/memory_set.rs
#	kernel/Cargo.lock
#	kernel/src/arch/aarch64/interrupt/handler.rs
#	kernel/src/arch/aarch64/interrupt/mod.rs
#	kernel/src/arch/aarch64/memory.rs
#	kernel/src/arch/aarch64/mod.rs
#	kernel/src/arch/aarch64/paging.rs
#	kernel/src/consts.rs
#	kernel/src/fs.rs
#	kernel/src/lib.rs
#	kernel/src/memory.rs
#	kernel/src/process/context.rs
#	tools/riscv-pk/.gitignore
#	tools/riscv-pk/LICENSE
#	tools/riscv-pk/Makefile.in
#	tools/riscv-pk/README.md
#	tools/riscv-pk/aclocal.m4
#	tools/riscv-pk/bbl/bbl.ac
#	tools/riscv-pk/bbl/bbl.c
#	tools/riscv-pk/bbl/bbl.h
#	tools/riscv-pk/bbl/bbl.lds
#	tools/riscv-pk/bbl/bbl.mk.in
#	tools/riscv-pk/bbl/logo.c
#	tools/riscv-pk/bbl/payload.S
#	tools/riscv-pk/bbl/raw_logo.S
#	tools/riscv-pk/bbl/riscv_logo.txt
#	tools/riscv-pk/config.h.in
#	tools/riscv-pk/configure
#	tools/riscv-pk/configure.ac
#	tools/riscv-pk/dummy_payload/dummy_entry.S
#	tools/riscv-pk/dummy_payload/dummy_payload.lds
#	tools/riscv-pk/dummy_payload/dummy_payload.mk.in
#	tools/riscv-pk/machine/atomic.h
#	tools/riscv-pk/machine/bits.h
#	tools/riscv-pk/machine/disabled_hart_mask.h
#	tools/riscv-pk/machine/emulation.c
#	tools/riscv-pk/machine/emulation.h
#	tools/riscv-pk/machine/encoding.h
#	tools/riscv-pk/machine/fdt.c
#	tools/riscv-pk/machine/fdt.h
#	tools/riscv-pk/machine/finisher.c
#	tools/riscv-pk/machine/finisher.h
#	tools/riscv-pk/machine/flush_icache.c
#	tools/riscv-pk/machine/htif.c
#	tools/riscv-pk/machine/htif.h
#	tools/riscv-pk/machine/machine.ac
#	tools/riscv-pk/machine/machine.mk.in
#	tools/riscv-pk/machine/mcall.h
#	tools/riscv-pk/machine/mentry.S
#	tools/riscv-pk/machine/minit.c
#	tools/riscv-pk/machine/misaligned_ldst.c
#	tools/riscv-pk/machine/mtrap.c
#	tools/riscv-pk/machine/mtrap.h
#	tools/riscv-pk/machine/muldiv_emulation.c
#	tools/riscv-pk/machine/uart.c
#	tools/riscv-pk/machine/uart.h
#	tools/riscv-pk/machine/uart16550.c
#	tools/riscv-pk/machine/uart16550.h
#	tools/riscv-pk/machine/unprivileged_memory.h
#	tools/riscv-pk/machine/vm.h
#	tools/riscv-pk/scripts/config.guess
#	tools/riscv-pk/scripts/config.sub
#	tools/riscv-pk/scripts/install.sh
#	tools/riscv-pk/scripts/mk-install-dirs.sh
#	tools/riscv-pk/scripts/vcs-version.sh
#	tools/riscv-pk/util/snprintf.c
#	tools/riscv-pk/util/string.c
#	tools/riscv-pk/util/util.mk.in
2018-12-02 00:27:10 +08:00
equation314
0eb33b661f aarch64/mmu: fix some bugs 2018-12-01 19:31:46 +08:00
WangRunji
18640b7537 impl NoMMU 2018-11-27 01:23:07 +08:00
WangRunji
52fe93188d disable delay allocating frame, remove memory_set_record 2018-11-27 01:18:30 +08:00
equation314
264600f145 aarch64/mmu: add io remap 2018-11-25 18:27:31 +08:00
equation314
a9de99d3a9 aarch64/mmu: remap kernel memory ranges at the end of memory::init() 2018-11-21 01:50:34 +08:00
WangRunji
12457f10cb update memory crate to 2018 edition 2018-11-19 15:43:28 +08:00
lcy1996
76d2c6ec7b Fix the bug of active_table_swap() wrongly force unlock in pg fault handler 2018-11-17 23:17:42 +08:00
lcy1996
b2fec2b16b Fix a bug in context for smp 2018-11-17 21:34:21 +08:00
lcy1996
9d803e87d9 replace some unwrap() and comment the cow pgfault handler 2018-11-17 16:25:24 +08:00
WangRunji
205f90a264 Merge branch 'dev' into g4-merge
# Conflicts:
#	crate/memory/src/cow.rs
#	crate/memory/src/memory_set.rs
#	crate/memory/src/paging/mod.rs
#	crate/memory/src/swap/mod.rs
#	crate/process/src/lib.rs
#	crate/process/src/process_manager.rs
#	crate/process/src/processor.rs
#	crate/process/src/thread.rs
#	crate/riscv
#	kernel/Cargo.lock
#	kernel/src/arch/riscv32/compiler_rt.rs
#	kernel/src/arch/riscv32/consts.rs
#	kernel/src/arch/riscv32/context.rs
#	kernel/src/arch/riscv32/interrupt.rs
#	kernel/src/arch/riscv32/memory.rs
#	kernel/src/arch/riscv32/mod.rs
#	kernel/src/arch/riscv32/paging.rs
#	kernel/src/arch/x86_64/driver/ide.rs
#	kernel/src/arch/x86_64/interrupt/handler.rs
#	kernel/src/arch/x86_64/mod.rs
#	kernel/src/console.rs
#	kernel/src/consts.rs
#	kernel/src/fs.rs
#	kernel/src/lib.rs
#	kernel/src/memory.rs
#	kernel/src/process/context.rs
#	kernel/src/process/mod.rs
#	kernel/src/syscall.rs
#	kernel/src/trap.rs
2018-11-16 18:58:29 +08:00
lcy1996
c5499a62c5 Fix bug in swap in/out. Address ailign to 4K. 2018-11-14 00:32:59 +08:00
lcy1996
5ee44588e0 Enlarge the physical and kernel heap memory. Fix the bug in map the kernel. 2018-11-09 11:08:45 +08:00
lcy1996
9adcea44d5 Code transplanting: Fix bugs. Pass test 'spin' 2018-11-08 19:21:13 +08:00
lcy1996
c8ea2cb0cf Fix bug and enable swap in/out and frame delayed allocating. 2018-11-05 20:37:05 +08:00
lcy1996
b1425a53f9 finish frame delayed allocating 2018-11-03 14:33:36 +08:00
lcy1996
504401355f Add expr3 report(not finiished. 2018-10-30 21:50:38 +08:00
lcy1996
edde416052 Finish swap for multi-user process 2018-10-30 12:45:09 +08:00
WangRunji
72dc3f62ad Remove kernel stack from MemorySet. 2018-10-27 15:17:15 +08:00
WangRunji
438e290b6d Fix PageTable::get_entry -> Option. 2018-10-26 23:43:12 +08:00
lcy1996
63349ade19 Finish add more comment for kernel and finish set user memory swappable. 2018-10-23 00:00:09 +08:00
lcy1996
0a81014007 Add page handler for swap in/out in riscv32's pagefault 2018-10-16 21:51:17 +08:00
Ben Pig Chu
4a17ce8f16 comments of crate/memory 2018-10-09 21:39:34 +08:00
WangRunji
501ce6c4be Fix memory crate test compile. 2018-09-21 16:00:48 +08:00
WangRunji
b88648ff44 Fit for newest Rust nightly. x86_64 ok, riscv32 broken. 2018-08-04 16:20:25 +08:00
WangRunji
0c9679b710 Fix fork and syscall return value. 2018-07-15 01:07:25 +08:00
WangRunji
96d8af8034 Use CowExt for RV32 2018-07-12 19:44:13 +08:00
WangRunji
7d856fe009 Fix memory::cow LLVM error for RV32 2018-07-12 19:35:21 +08:00
WangRunji
7c7dbc9ded Add CR3 to Context (x86_64) 2018-07-12 16:42:21 +08:00
WangRunji
95ab3a2f3b Allocate kernel stack from heap, remove stack allocator, remove guard page. 2018-07-12 00:33:43 +08:00
WangRunji
81ff6f13e5 Fix recursive mapping, finish kernel remap. 2018-07-11 23:43:28 +08:00
WangRunji
d3ed84ba61 Fix compile 2018-07-11 00:53:40 +08:00
WangRunji
aecb85d5e7 Move MemorySet out to memory crate 2018-07-10 21:54:16 +08:00
WangRunji
b26fee1990 Make more mods common for both x86_64 & riscv32. 2018-07-10 17:07:03 +08:00
WangRunji
bf2ad7c6a5 Change target arch to RISCV32IMA. Recover some dependencies. 2018-07-06 22:33:28 +08:00
WangRunji
98be93e215 Fix Fifo & Clock SwapManager, pass test. 2018-07-02 20:03:06 +08:00
WangRunji
a7a34835d5 Basic swap framework, temporarily disable SwapManagers 2018-06-24 01:44:14 +08:00
WangRunji
e47f57a12a Cow test pass in OS 2018-06-23 22:30:57 +08:00
WangRunji
ade0f0110f Use PageTable interface in OS 2018-06-23 19:11:41 +08:00
WangRunji
f500086b9e Copy-on-write for PageTable interface. 2018-06-20 18:55:49 +08:00
WangRunji
978faf46c5 Split test for MockPageTable 2018-06-20 16:50:14 +08:00
WangRunji
aa109498f1 Clear memory crate, redefine PageTable interface, reimplement MockPageTable. 2018-06-20 16:33:03 +08:00
WangRunji
09098f0d2f Add physical mod and reorganize. 2018-04-26 16:23:54 +08:00
WangRunji
e2e9ead17c Improve MockPageTable. Fix tests. 2018-04-25 16:17:15 +08:00
WangRunji
733c102836 EnhancedClockSwapManager 2018-04-25 15:32:43 +08:00
WangRunji
c0d83ef75b Make tests safe, by using Arc & RefCell. 2018-04-25 13:50:31 +08:00
WangRunji
e5e27db4ec New page_table mod. Addr -> VirtAddr. 2018-04-23 19:05:44 +08:00
WangRunji
8d304da4b4 MockSwapper 2018-04-23 18:48:20 +08:00
WangRunji
470d5692fe Pass test for FifoSwapManager. Change interface. 2018-04-19 15:28:32 +08:00
WangRunji
be6ff50d7f Test framework for FifoSwapManager. Not passed. 2018-04-19 12:42:24 +08:00
WangRunji
a1e9ee36b2 Basic SwapManager & MockPageTable 2018-04-19 11:37:13 +08:00
WangRunji
0420e85e4d Simple VMA & MM struct at extern crate. 2018-04-19 00:22:03 +08:00