Commit graph

85 commits

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