Commit graph

1127 commits

Author SHA1 Message Date
Frans Kaashoek 49db5119e9 x 2019-07-24 09:06:49 -04:00
Frans Kaashoek 26ce97fc76 One more 2019-07-24 09:06:30 -04:00
Frans Kaashoek e627608810 Delete a few other no-longer relevant files 2019-07-24 09:05:05 -04:00
Frans Kaashoek 6f3a441c10 Remove a few no longer relevant files 2019-07-24 08:59:47 -04:00
Frans Kaashoek dfc2cf9123 add rtm's cow lab 2019-07-24 08:55:41 -04:00
Frans Kaashoek a41365faa3 Add relevant docs to repo 2019-07-24 08:38:41 -04:00
Frans Kaashoek 0387e2156f Add a few sbrktest for lazy allocatioin lab 2019-07-24 08:37:43 -04:00
Robert Morris 936afc6e1a mstart -> start 2019-07-23 14:31:12 -04:00
Robert Morris 54178ad94d simplify kernel mapping calls 2019-07-23 12:17:17 -04:00
Robert Morris 55bc96d419 a few core -> CPU
get rid of PDF generating support
2019-07-23 11:14:10 -04:00
Frans Kaashoek b8a31c494c one more TRAMPOLINE 2019-07-23 07:30:23 -04:00
Frans Kaashoek 6c78af4a57 fix mapkstack 2019-07-22 20:58:15 -04:00
Frans Kaashoek 62091abae9 Test whether writing below stack fails 2019-07-22 18:08:52 -04:00
Frans Kaashoek b2e9c8eea5 Clear U bit for second stack page so that it functions as a guard page 2019-07-22 15:38:08 -04:00
Robert Morris 38b430687c nit 2019-07-22 15:04:07 -04:00
Robert Morris 6b379e4707 -MD and TRAPFRAME 2019-07-22 14:54:40 -04:00
Frans Kaashoek 5eab649255 Allocate 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).
2019-07-22 14:30:45 -04:00
Frans Kaashoek c5d48db045 Merge branch 'riscv-kstack' into riscv 2019-07-22 13:32:33 -04:00
Robert Morris 328204d9cc not much 2019-07-20 18:51:31 -04:00
Robert Morris 06e49a58dc pi for pipe, rather than p, to avoid confusion with proc's p->lock 2019-07-20 17:07:20 -04:00
Robert Morris 3333665ab6 not much 2019-07-20 10:17:26 -04:00
Robert Morris 2418ac380c it's not clear that the release will always enable interrupts 2019-07-19 13:27:48 -04:00
Frans Kaashoek 06109901c9 x 2019-07-19 11:27:02 -04:00
Robert Morris dbd729b32d with per-proc locks, we don't need the intr_on() inside the loop. 2019-07-19 10:20:02 -04:00
Robert Morris 32168df609 no need to save/restore 14 2019-07-19 09:02:15 -04:00
Frans Kaashoek 9156632701 One 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.

Another way would be to allocate and map them dynamically, but then we
need to reload page table when switching processes in scheduler()
and/or have a kernel pagetable per proc (if we want k->stack to be the
same virtual address in each process).

One gotcha: kernel addresses are not equal to physical addresses for
stack addresses.  A stack address must be translated if we need its
physical address (e.g., virtio passes a stack address to the disk).
2019-07-19 08:38:51 -04:00
Frans Kaashoek b924e44f06 Merge branch 'riscv' of g.csail.mit.edu:xv6-dev into riscv 2019-07-17 05:53:47 -04:00
Frans Kaashoek ce53416f49 Delete x86 comment 2019-07-17 05:53:34 -04:00
Robert Morris ebc3937209 conservatively call sfence.vma before every satp load. 2019-07-16 17:02:21 -04:00
Robert Morris 6bbc2b2245 cosmetic changes 2019-07-11 10:38:56 -04:00
Robert Morris 7797a38423 another test, to help with locking exercises 2019-07-11 05:41:59 -04:00
Robert Morris 4bc900e78b nits 2019-07-10 14:54:34 -04:00
Robert Morris e6addf25bb feeble attempt at build instructions 2019-07-10 10:30:33 -04:00
Robert Morris 061e3be6f8 more comment cleanup 2019-07-10 10:13:08 -04:00
Robert Morris c0266a877a document which proc fields are protected by p->lock 2019-07-10 09:28:00 -04:00
Robert Morris 5eb1685700 have kill() lock before looking at p->pid
document wait()'s use of np->parent w/o holding lock.
2019-07-10 09:24:50 -04:00
Robert Morris 9981bb2270 tweak some comments. 2019-07-10 08:57:51 -04:00
Frans Kaashoek 2f22a3ed6a Merge branch 'riscv-proc' into riscv 2019-07-08 15:50:06 -04:00
Robert Morris 60ed537427 Merge branch 'riscv-proc' of g.csail.mit.edu:xv6-dev into riscv-proc 2019-07-08 11:11:29 -04:00
Robert Morris 9d34838b4f holding p->lock all the way through state=RUNNABLE means we don't need EMBRYO 2019-07-08 11:11:00 -04:00
Frans Kaashoek adcc612901 Update runoff list for producing xv6.pdf 2019-07-08 08:50:55 -04:00
Robert Morris db72f3108f eliminate ptable. ptable.lock -> pid_lock. 2019-07-07 15:20:13 -04:00
Robert Morris 4ce3a5fa21 nits 2019-07-07 14:57:16 -04:00
Robert Morris c4f6a241cd avoid a double-lock of initproc->lock if child of init is reparenting 2019-07-07 07:03:28 -04:00
Robert Morris 7114bf43ed Merge branch 'riscv-proc' of g.csail.mit.edu:xv6-dev into riscv-proc 2019-07-07 06:39:58 -04:00
Robert Morris 62313be582 another fork test 2019-07-07 06:39:31 -04:00
Frans Kaashoek dabbc348bc Maybe fix two races identified by rtm (thx!):
- during exit(), hold p's parent lock and p's lock across all changes
to p and its parent (e.g., reparenting and wakeup1).  the lock
ordering between concurrent exits of children, parent, and great
parent might work out because processes form a tree.

- in wakeup1() test and set p->state atomically by asking caller to
have p locked.

a correctness proof would be desirable.
2019-07-06 16:38:41 -04:00
Robert Morris 75b0c6fc91 back-port fork/exit/exit tests to xv6-riscv 2019-07-05 12:33:26 -04:00
Robert Morris be88befed7 two exit/exit tests 2019-07-05 11:44:51 -04:00
Frans Kaashoek fab5e7c1de Make 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.
2019-07-04 08:57:23 -04:00