Jiajie Chen
69498ae909
Fix delay memory handler: set present=true before unmapping
2019-03-08 15:24:28 +08:00
WangRunji
f7f740a021
remove TLS setup code. fix check writable memory
2019-03-08 10:50:46 +08:00
Jiajie Chen
84e07a6d83
Implement sys_mprotect and move attr setting from page_fault_handler to map in Delay
2019-03-08 00:03:06 +08:00
Jiajie Chen
6e7dc9e349
Minor fixes around thread pool, writev, fs and implement gettid
2019-03-07 23:04:52 +08:00
Jiajie Chen
8b9aecca1c
Fix a potential racing in park() and unpark(), fix sys_poll for a running telnet
2019-03-07 07:46:11 +08:00
Jiajie Chen
42b02453a0
Implement basic version of sys_poll supporting stdin and socket, fix some deadlocks and introduce some others
2019-03-06 20:24:55 +08:00
Jiajie Chen
2683314c38
Allocate pages eagerly for Delay when forking. Implement sys_getsockname.
2019-03-06 15:35:10 +08:00
Jiajie Chen
a51b9dbd90
Implement tls setup code(not working yet), tcp sys_bind and sys_connect
2019-03-06 10:19:19 +08:00
WangRunji
738554386b
introduce VMError to simplify EFAULT error handling
2019-03-03 01:27:30 +08:00
WangRunji
2a6c4554d1
Merge remote-tracking branch 'course/biscuit' into biscuit
2019-03-02 20:48:49 +08:00
Jiajie Chen
e543449836
Implement basic version of sys_munmap and sys_time
2019-03-02 20:15:55 +08:00
WangRunji
a979b6b5ec
impl sys_getppid. fix checking pointer for process syscalls
2019-03-02 19:09:39 +08:00
WangRunji
6d78206f77
impl finding free area for mmap
2019-02-26 00:46:25 +08:00
WangRunji
254663e976
impl a simple work-stealing scheduler
2019-02-24 02:26:55 +08:00
WangRunji
5a1b3e0dff
no longer support 'remove' in Scheduler
2019-02-24 01:50:29 +08:00
WangRunji
a224e85c8d
split scheduler mod, make Scheduler Sync
...
biscuit: fix argc, argv
2019-02-23 19:28:38 +08:00
WangRunji
e678186b3d
support idle for rcore-thread, remove idle thread in kernel
2019-02-23 16:54:02 +08:00
WangRunji
ca45f8f152
fix check user ptr in syscalls
2019-02-22 16:30:56 +08:00
WangRunji
7927c7c168
Merge branch 'thread' into biscuit
...
# Conflicts:
# kernel/src/process/mod.rs
# kernel/src/process/structs.rs
# kernel/src/syscall.rs
2019-02-22 12:06:21 +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
086fcd4079
rename 'event_hub' to 'timer', add doc and simplify
2019-01-28 13:48:18 +08:00
WangRunji
1541282ad7
add example for 'thread' crate
2019-01-24 22:44:28 +08:00
WangRunji
5bffce787b
rename 'process' crate to 'thread'
2019-01-24 19:03:45 +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
equation314
1aa8436d71
aarch64/doc: add interruption & timer drivers
2019-01-01 20:47:19 +08:00
WangRunji
5d7e97d9e9
fix interrupt in process crate
2018-12-31 22:49:28 +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
c65b7357a4
use riscv crate from github
2018-12-28 17:00:59 +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
WangRunji
b3a8e95d78
merge interrupt & context switch for rv32 & rv64
2018-12-27 19:48:08 +08:00
dzy
6f2d059ba5
implement map_kernel, now enters the kernel well
2018-12-26 15:42:08 +08:00
dzy
21adebb203
run until ms.token()
2018-12-26 14:56:13 +08:00
dzy
a4348428a6
can run until update
2018-12-26 13:58:08 +08:00
dzy
d67a224494
add wrj's 704af94
patch
2018-12-26 11:55:27 +08:00
dzy
ed3fb6d423
another temporary
2018-12-26 09:54:14 +08:00
dzy
0dbffbc0fa
temporary
2018-12-26 00:12:10 +08:00
dzy
b7e124930d
fix compilation errors
2018-12-24 21:36:33 +08:00
dzy
3910f71521
preliminary support for riscv64, not tested.
...
riscv32 runs fine.
2018-12-24 20:52:54 +08:00
equation314
aa5bd3041b
Merge branch 'master' into arch-aarch64
2018-12-20 23:07:16 +08:00
Ben Pig Chu
d737b1e7ba
maually remove warning, pt6
2018-12-18 21:39:19 +08:00
Ben Pig Chu
6eb49a0106
maually remove warning, pt5
2018-12-18 16:29:09 +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
dzy
61a3beb8ba
Start porting for rv64
2018-12-17 14:58:16 +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
equation314
d7511d8120
aarch64/fb: add mailbox property interfaces
2018-12-14 21:19:44 +08:00
WangRunji
557f021c08
fix DelayHandler & MemoryAttr
2018-12-14 02:31:46 +08:00
equation314
4257b76183
aarch64/fb: add bcm2837 mailbox
2018-12-12 01:24:36 +08:00
equation314
81af2c82fd
aarch64: reduce some warnings, config system/generic timer in Makefile
2018-12-11 16:58:04 +08:00
equation314
5a165178cc
aarch64: implement IRQ register & serial IRQ
2018-12-11 15:07:13 +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
28d872064d
Merge branch 'master' of https://github.com/wangrunji0408/RustOS into arch-aarch64
2018-12-07 11:35:07 +08:00
equation314
aa5e7a4e6f
remove #![feature(extern_crate_item_prelude)]
2018-12-03 17:22:11 +08:00
Wang Runji
3f2beab52d
Merge branch 'master' into user-img
2018-12-02 22:39:59 +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
75b039c924
aarch64/mmu: move crate aarch64 to remote
2018-12-01 22:26:55 +08:00
equation314
a59a7fbe9a
aarch64/mmu: simply handle page fault
2018-12-01 20:00:35 +08:00
equation314
d6a54496f0
arch64/mmu: invalidate all icaches in InactivePageTable::with()
2018-12-01 19:43:58 +08:00
equation314
0eb33b661f
aarch64/mmu: fix some bugs
2018-12-01 19:31:46 +08:00
WangRunji
fcf5074500
impl M-mode kernel for riscv32
2018-12-01 17:37:37 +08:00
equation314
f882a085d6
user: link created SFS image in kernel
2018-11-29 17:33:31 +08:00
equation314
94bc8353f7
user: create SFS image in Makefile
2018-11-29 12:49:58 +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
WangRunji
2db453556d
try to fix interrupt & deadlock on RV32
2018-11-26 16:58:45 +08:00
equation314
d30c7e59ca
aarch64: minor modify
2018-11-25 20:01:13 +08:00
equation314
264600f145
aarch64/mmu: add io remap
2018-11-25 18:27:31 +08:00
equation314
a8b334123a
aarch64/mmu: add memory region attribute config
2018-11-25 17:58:17 +08:00
equation314
f9e47b2fd8
aarch64/mmu: refactor PageTableFlags
2018-11-25 00:29:39 +08:00
equation314
de6354ddd3
aarch64/mmu: use ASID to avoid flush TLB frequently in context switch
2018-11-23 23:25:15 +08:00
equation314
33d4b6975b
aarch64/mmu: use DSB instead of TLB flush after modifying PTE
2018-11-23 15:23:48 +08:00
equation314
55087fc5a2
aarch64/mmu: use both TTBR0_EL1 & TTBR1_EL1
2018-11-23 00:43:18 +08:00
equation314
bb1c1abaa4
aarch64/mmu: can run on the real raspi3
2018-11-21 20:02:34 +08:00
equation314
a9de99d3a9
aarch64/mmu: remap kernel memory ranges at the end of memory::init()
2018-11-21 01:50:34 +08:00
equation314
9e8124abbb
aarch64/mmu: mmu enabled
2018-11-20 16:46:16 +08:00
WangRunji
b1bdac7d0f
fix merge for aarch64. now it works!
2018-11-20 01:08:39 +08:00
WangRunji
2daf8c188d
Merge remote-tracking branch 'equation314/arch-aarch64' into dev
...
# Conflicts:
# .gitignore
# kernel/Cargo.lock
# kernel/Cargo.toml
# kernel/Makefile
# kernel/riscv32-blog_os.json
# kernel/src/consts.rs
# kernel/src/fs.rs
# kernel/src/lib.rs
# kernel/src/process/context.rs
# kernel/src/process/mod.rs
2018-11-20 00:15:19 +08:00
WangRunji
4495622317
update process
crate to 2018 edition
2018-11-19 15:46:40 +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
df485d506e
simplify ProcessManager
...
- given that a proc can only be waited by its parent, wait_queue is no longer needed.
2018-11-17 12:58:40 +08:00
WangRunji
ef75c8a072
fix unwrap panic. now user shell is working.
2018-11-17 12:40:51 +08:00
WangRunji
da399dca96
remove Process struct
2018-11-16 22:27:03 +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
WangRunji
5ce7d0a9c0
use user shell by default. fix kernel shell removing user thread.
2018-11-16 01:22:59 +08:00
equation314
576ae1d911
add setup_page_table
2018-11-15 19:12:02 +08:00
koumingyang
ef213d60bb
mmu
2018-11-15 14:22:57 +08:00
lcy1996
eb00b2bfd3
merge conflict
2018-11-14 21:54:26 +08:00
lcy1996
a8da42d521
Add expr4 report and some trace for synctest
2018-11-14 21:45:56 +08:00
chenqiuhao
4d8d48cf4d
repair some bugs and move child control to processmanager
2018-11-14 18:36:47 +08:00
lcy1996
c5499a62c5
Fix bug in swap in/out. Address ailign to 4K.
2018-11-14 00:32:59 +08:00
chenqiuhao
6652f8daf6
repair some bugs
2018-11-13 22:52:11 +08:00