summaryrefslogtreecommitdiff
path: root/kernel
AgeCommit message (Collapse)Author
2019-07-26trampin -> uservecRobert Morris
trampout -> userret
2019-07-25fix an exit/exit deadlock -> one more locking protocol violationRobert Morris
increase timer rate from 1/second to 10/second
2019-07-25purge x86 stuff from defs.hRobert Morris
2019-07-25comments for timer setupRobert Morris
2019-07-24rationalize some vm function namesRobert Morris
2019-07-24???Robert Morris
2019-07-24no more PAGEBREAKRobert Morris
2019-07-24ping-pong exerciseRobert Morris
2019-07-24display assembly instructions, to help with first.tex exerciseRobert Morris
2019-07-23mstart -> startRobert Morris
2019-07-23simplify kernel mapping callsRobert Morris
2019-07-23a few core -> CPURobert Morris
get rid of PDF generating support
2019-07-23one more TRAMPOLINEFrans Kaashoek
2019-07-22fix mapkstackFrans Kaashoek
2019-07-22Clear U bit for second stack page so that it functions as a guard pageFrans Kaashoek
2019-07-22nitRobert Morris
2019-07-22-MD and TRAPFRAMERobert Morris
2019-07-22Allocate 2 pages per proc, with the top one unmapped.Frans Kaashoek
The page below the last proc is unmapped by default (because the kernel doesn't map anything right below the kernel stacks).
2019-07-22Merge branch 'riscv-kstack' into riscvFrans Kaashoek
2019-07-20not muchRobert Morris
2019-07-20pi for pipe, rather than p, to avoid confusion with proc's p->lockRobert Morris
2019-07-20not muchRobert Morris
2019-07-19it's not clear that the release will always enable interruptsRobert Morris
2019-07-19xFrans Kaashoek
2019-07-19with per-proc locks, we don't need the intr_on() inside the loop.Robert Morris
2019-07-19no need to save/restore 14Robert Morris
2019-07-19One way of supporting a guard page below kstack: allocate kstacks inFrans Kaashoek
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-17Merge branch 'riscv' of g.csail.mit.edu:xv6-dev into riscvFrans Kaashoek
2019-07-17Delete x86 commentFrans Kaashoek
2019-07-16conservatively call sfence.vma before every satp load.Robert Morris
2019-07-11cosmetic changesRobert Morris
2019-07-11another test, to help with locking exercisesRobert Morris
2019-07-10nitsRobert Morris
2019-07-10more comment cleanupRobert Morris
2019-07-10document which proc fields are protected by p->lockRobert Morris
2019-07-10have kill() lock before looking at p->pidRobert Morris
document wait()'s use of np->parent w/o holding lock.
2019-07-10tweak some comments.Robert Morris
2019-07-08holding p->lock all the way through state=RUNNABLE means we don't need EMBRYORobert Morris
2019-07-07eliminate ptable. ptable.lock -> pid_lock.Robert Morris
2019-07-07nitsRobert Morris
2019-07-07avoid a double-lock of initproc->lock if child of init is reparentingRobert Morris
2019-07-06Maybe fix two races identified by rtm (thx!):Frans Kaashoek
- 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-04Make size in stat.h be a uint64Frans Kaashoek
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-04xFrans Kaashoek
2019-07-03Simplify wakeup1Frans Kaashoek
2019-07-03Apply some corresponding bug fixes from wq branch hereFrans Kaashoek
2019-07-02Remove some debugging codeFrans Kaashoek
2019-07-02Fix a lost wakeup bug: the disk driver's wakeup() can run after theFrans Kaashoek
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. Fix some other issues: - Don't initialize proc lock in allocproc(), because freeproc() sets np->state = UNUSED and allocproc() can choose np and calls initlock() on the process's lock, releasing np's lock accidentally. Move initializing proc's lock to init. - Protect nextpid using ptable.lock (and move into its own function) Some clean up: - Don't acquire p->lock when it p is used in a private way (e.g., exit()/grow()). - Move find_runnable() back into scheduler().
2019-07-02Merge branch 'riscv' into riscv-procFrans Kaashoek
2019-07-02xFrans Kaashoek