b2e9c8eea5Clear U bit for second stack page so that it functions as a guard page
Frans Kaashoek
2019-07-22 15:38:08 -0400
38b430687cnit
Robert Morris
2019-07-22 15:04:07 -0400
6b379e4707-MD and TRAPFRAME
Robert Morris
2019-07-22 14:54:40 -0400
5eab649255Allocate 2 pages per proc, with the top one unmapped. The page below the last proc is unmapped by default (because the kernel doesn't map anything right below the kernel stacks).
Frans Kaashoek
2019-07-22 14:30:45 -0400
c5d48db045Merge branch 'riscv-kstack' into riscv
Frans Kaashoek
2019-07-22 13:32:33 -0400
328204d9ccnot much
Robert Morris
2019-07-20 18:51:31 -0400
06e49a58dcpi for pipe, rather than p, to avoid confusion with proc's p->lock
Robert Morris
2019-07-20 17:07:20 -0400
3333665ab6not much
Robert Morris
2019-07-20 10:17:26 -0400
2418ac380cit's not clear that the release will always enable interrupts
Robert Morris
2019-07-19 13:27:48 -0400
06109901c9x
Frans Kaashoek
2019-07-19 11:27:02 -0400
dbd729b32dwith per-proc locks, we don't need the intr_on() inside the loop.
Robert Morris
2019-07-19 10:20:02 -0400
32168df609no need to save/restore 14
Robert Morris
2019-07-19 09:02:15 -0400
9156632701One way of supporting a guard page below kstack: allocate kstacks in procinit() and map them high up (below TRAMPOLNE) with an empty mapping below each stack. Never free a kernel stack.
Frans Kaashoek
2019-07-19 08:38:51 -0400
b924e44f06Merge branch 'riscv' of g.csail.mit.edu:xv6-dev into riscv
Frans Kaashoek
2019-07-17 05:53:47 -0400
ce53416f49Delete x86 comment
Frans Kaashoek
2019-07-17 05:53:34 -0400
ebc3937209conservatively call sfence.vma before every satp load.
Robert Morris
2019-07-16 17:02:21 -0400
6bbc2b2245cosmetic changes
Robert Morris
2019-07-11 10:38:56 -0400
7797a38423another test, to help with locking exercises
Robert Morris
2019-07-11 05:41:59 -0400
4bc900e78bnits
Robert Morris
2019-07-10 14:54:34 -0400
e6addf25bbfeeble attempt at build instructions
Robert Morris
2019-07-10 10:30:33 -0400
061e3be6f8more comment cleanup
Robert Morris
2019-07-10 10:13:08 -0400
c0266a877adocument which proc fields are protected by p->lock
Robert Morris
2019-07-10 09:28:00 -0400
5eb1685700have kill() lock before looking at p->pid document wait()'s use of np->parent w/o holding lock.
Robert Morris
2019-07-10 09:24:50 -0400
9981bb2270tweak some comments.
Robert Morris
2019-07-10 08:57:51 -0400
2f22a3ed6aMerge branch 'riscv-proc' into riscv
Frans Kaashoek
2019-07-08 15:50:06 -0400
60ed537427Merge branch 'riscv-proc' of g.csail.mit.edu:xv6-dev into riscv-proc
Robert Morris
2019-07-08 11:11:29 -0400
9d34838b4fholding p->lock all the way through state=RUNNABLE means we don't need EMBRYO
Robert Morris
2019-07-08 11:11:00 -0400
adcc612901Update runoff list for producing xv6.pdf
Frans Kaashoek
2019-07-08 08:50:55 -0400
db72f3108feliminate ptable. ptable.lock -> pid_lock.
Robert Morris
2019-07-07 15:20:13 -0400
4ce3a5fa21nits
Robert Morris
2019-07-07 14:57:16 -0400
c4f6a241cdavoid a double-lock of initproc->lock if child of init is reparenting
Robert Morris
2019-07-07 07:03:28 -0400
7114bf43edMerge branch 'riscv-proc' of g.csail.mit.edu:xv6-dev into riscv-proc
Robert Morris
2019-07-07 06:39:58 -0400
62313be582another fork test
Robert Morris
2019-07-07 06:39:31 -0400
dabbc348bcMaybe fix two races identified by rtm (thx!):
Frans Kaashoek
2019-07-06 16:38:41 -0400
75b0c6fc91back-port fork/exit/exit tests to xv6-riscv
Robert Morris
2019-07-05 12:33:26 -0400
be88befed7two exit/exit tests
Robert Morris
2019-07-05 11:44:51 -0400
fab5e7c1deMake size in stat.h be a uint64 Supporting print long using %l (a bit of cheat) Modify ls to print size using %l We should probably update size in inode too.
Frans Kaashoek
2019-07-04 08:54:23 -0400
6bfb078b14x
Frans Kaashoek
2019-07-04 08:54:16 -0400
47e69250d0Simplify wakeup1
Frans Kaashoek
2019-07-03 15:38:30 -0400
cee830af24Apply some corresponding bug fixes from wq branch here
Frans Kaashoek
2019-07-03 15:18:55 -0400
ccf299850bRemove some debugging code
Frans Kaashoek
2019-07-02 20:52:30 -0400
26f306113aFix a lost wakeup bug: the disk driver's wakeup() can run after the reading process acquired p->lock and released virtio lock in sleep(), but before the process had set p->status to SLEEPING, because the wakeup tested p->status without holding p's lock. Thus, wakeup can complete without seeing any process SLEEPING and then p sets p->status to SLEEPING.
Frans Kaashoek
2019-07-02 19:29:14 -0400
1e4d7065d6Merge branch 'riscv' into riscv-proc
Frans Kaashoek
2019-07-02 14:19:31 -0400
84c759fc02x
Frans Kaashoek
2019-07-02 14:09:38 -0400
37ac6f8f4fDon't start processes at the end of the proc table
Frans Kaashoek
2019-07-02 13:55:52 -0400
da51735980Avoid two cores selecting the same process to run
Frans Kaashoek
2019-07-02 13:40:33 -0400
f59c1bf1d8try to continue from walk() failing to allocate a page-table page
Robert Morris
2019-07-02 11:45:06 -0400
b27f275014avoid allocproc() returning a struct proc with non-zero p->sz
Robert Morris
2019-07-02 11:17:50 -0400
1540c8b15aCOW tests
Robert Morris
2019-07-02 11:04:35 -0400
67702cf706Checkpoint switching to per-process locks, in attempt clarify xv6's locking plan, which is a difficult to understand because ptable lock protects many invariants. This implementation has a bug: once in a while xv6 unlocks a proc lock that is locked by another core.
Frans Kaashoek
2019-07-02 09:14:47 -0400
40f1041a0adon't enable interrupts until done with sstatus, scause, &c
Robert Morris
2019-07-02 05:20:11 -0400
535ac52efaoops, don't hold mycpu() result across intr_off()
Robert Morris
2019-07-01 14:15:18 -0400
abfe9999f4have fork() fail, not panic, if not enough phys mem
Robert Morris
2019-07-01 17:46:06 -0400
18e76a6c47sbrk() returns a pointer, so it should be 64 bits
Robert Morris
2019-07-01 17:01:50 -0400
9b99f00743oops, don't hold mycpu() result across intr_off()
Robert Morris
2019-07-01 14:15:18 -0400
0498bfd159timer interrupt in the kernel -> yield
Robert Morris
2019-07-01 13:46:11 -0400
c34bd3d167Checkpoint some progress compiling xv6.pdf
Frans Kaashoek
2019-07-01 13:02:24 -0400
2c0338fe42x
Frans Kaashoek
2019-07-01 08:28:14 -0400
af6c35e14bIntroduce alloc3_desc and UsedArea to make code easier to read
Frans Kaashoek
2019-07-01 08:20:35 -0400
a8305b7318FD_DEVICE
Robert Morris
2019-06-13 10:29:27 -0400
46744c4a13for spinlocks, use gcc intrinsics, but say what they compile to
Robert Morris
2019-06-13 10:00:50 -0400
ca39672a30clean up virtio code
Robert Morris
2019-06-13 09:40:17 -0400
4adf016925eliminate ramdisk
Robert Morris
2019-06-13 06:57:38 -0400
de9d72c908virtio disk driver
Robert Morris
2019-06-13 06:49:02 -0400
5753553213separate source into kernel/ user/ mkfs/
Robert Morris
2019-06-11 09:57:14 -0400
91ba81110agdb backtraces: -ggdb, -fno-omit-frame-pointer, BSIZE=1024
Robert Morris
2019-06-06 13:54:03 -0400
8607051b5ffix a create()/unlink() deadlock
Robert Morris
2019-06-06 10:38:11 -0400
31ef85f552add plic.c
Robert Morris
2019-06-06 05:19:59 -0400
b05bcce939add kernelvec
Robert Morris
2019-06-06 05:19:35 -0400
dff7ab3f8fmake -O work with asm volatile(...)
Robert Morris
2019-06-05 15:05:56 -0400
5684556c19clean up -Wall
Robert Morris
2019-06-05 14:31:13 -0400
5eb1cb4972push_off() and pop_off() in myproc()
Robert Morris
2019-06-05 14:14:57 -0400
3113643768spinlocks using gcc intrinsics push_off() / pop_off() set up per-hart plic stuff so all harts get device interrupts
Robert Morris
2019-06-05 14:05:46 -0400
f1a727b971start at support for multiple CPUs
Robert Morris
2019-06-05 11:42:03 -0400
ec3d3a1fceyield if timer interrupt all user tests passed
Robert Morris
2019-06-04 14:25:48 -0400