Commit Graph

85 Commits (f1bb53c690051994f5a2c43ee900f9e335bd019c)

Author SHA1 Message Date
Frans Kaashoek f1bb53c690 The driver should free descriptors, not interrupt handler. This
avoids handler freeing descriptors before driver sees that the request
has completed.
2019-07-30 08:13:03 -04:00
Frans Kaashoek 5304310452 Remove B_DIRTY
Use refcnt to pin blocks into the cache
Replace flags/B_VALID with a boolean field valid
Use info[id].status to signal completion of disk interrupt
Pass a read/write flag to virtio_disk_rw
2019-07-29 17:33:16 -04:00
Robert Morris 47b9cfee49 separate out timer init code for clarity 2019-07-28 13:16:49 -04:00
Robert Morris 1ec50c5848 xxx 2019-07-28 07:43:22 -04:00
Robert Morris 6507da772d argptr no longer needed, since copyin checks 2019-07-28 06:29:37 -04:00
Robert Morris 629faafa36 cleaner UART register interface 2019-07-27 06:44:24 -04:00
Robert Morris a33f60fea3 console/uart tweaks 2019-07-27 05:47:19 -04:00
Robert Morris cf48b24c03 beautify console.c 2019-07-27 04:15:06 -04:00
Robert Morris 281d450a08 split printf into a separate file, to make console.c more like a driver 2019-07-27 03:49:03 -04:00
Robert Morris cc1a303d09 fetchint isn't used any more 2019-07-26 12:34:06 -04:00
Robert Morris f0987d82dc ??? 2019-07-26 11:09:54 -04:00
Robert Morris c714e3e35c machinevec -> timervec 2019-07-26 10:17:02 -04:00
Robert Morris fa2e2e3c81 uservec before userret in trampoline, to match book and kernelvec 2019-07-26 09:38:22 -04:00
Robert Morris 8d30e21b59 Merge branch 'riscv' of g.csail.mit.edu:xv6-dev into riscv 2019-07-26 04:53:59 -04:00
Robert Morris ea95a6654c trampin -> uservec
trampout -> userret
2019-07-26 04:53:46 -04:00
Frans Kaashoek 47c9721d78 a few name changes in panic msg 2019-07-25 06:59:07 -04:00
Robert Morris 4e62de64cd fix an exit/exit deadlock -> one more locking protocol violation
increase timer rate from 1/second to 10/second
2019-07-25 06:30:49 -04:00
Robert Morris b19adf79f9 purge x86 stuff from defs.h 2019-07-25 05:37:35 -04:00
Robert Morris 5d5e4e065f comments for timer setup 2019-07-25 05:35:03 -04:00
Robert Morris 9a817bd134 rationalize some vm function names 2019-07-24 15:28:37 -04:00
Robert Morris da898a11b6 ??? 2019-07-24 14:40:13 -04:00
Robert Morris a77287e924 no more PAGEBREAK 2019-07-24 13:33:43 -04:00
Robert Morris b4f89bb529 ping-pong exercise 2019-07-24 10:39:05 -04:00
Robert Morris 8f6865d1f1 display assembly instructions, to help with first.tex exercise 2019-07-24 10:15:45 -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 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 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