Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2020-11-05 | Frans' proc_lock. | Robert Morris | 1 | -76/+33 | |
2020-11-05 | free proc if kalloc fails | Robert Morris | 1 | -0/+1 | |
2020-10-14 | kvmmake() makes a complete kernel page table, matching Figure 3.3 | Frans Kaashoek | 1 | -11/+18 | |
2020-08-17 | handle another out-of-memory in fork(). the policy here is not consistent, | Robert Morris | 1 | -0/+2 | |
since other calls (e.g. exec()) panic on out of memory. | |||||
2020-08-17 | try to handle a few of the possible out-of-memory errors in fork() | Robert Morris | 1 | -5/+18 | |
2020-08-17 | modify uvmunmap() to be in aligned pages | Robert Morris | 1 | -2/+2 | |
fix a bug in fork() recovering from out of memory | |||||
2020-08-10 | Merge pull request #9 from d0iasm/riscv | Frans Kaashoek | 1 | -7/+7 | |
update initcode to avoid using the compressed extension | |||||
2020-08-10 | modify each page in usertests countfree() | Robert Morris | 1 | -2/+3 | |
get rid of static for walk() and freewalk() | |||||
2020-08-10 | cpu->scheduler -> cpu->context to reduce confusion | Robert Morris | 1 | -2/+2 | |
2020-08-10 | rename p->tf to p->trapframe, for consistency with p->context | Robert Morris | 1 | -9/+9 | |
2020-03-20 | update initcode to avoid using the compressed extension | Asami Doi | 1 | -7/+7 | |
2019-10-27 | fix a potential memory leak | Robert Morris | 1 | -2/+1 | |
2019-10-16 | nits | Robert Morris | 1 | -1/+1 | |
2019-09-23 | story is more complex than I thought. | Robert Morris | 1 | -8/+11 | |
2019-09-23 | bug fix: reparent() sometimes deadlocked | Robert Morris | 1 | -15/+32 | |
bug fix: exit() sometimes released a different parent lock than it acquired usertests | |||||
2019-09-20 | don't panic if a program frees all its memory with sbrk(). | Robert Morris | 1 | -3/+1 | |
if a program sbrk()'s to a non-page-boundary, don't free that page. corresponding usertests. | |||||
2019-09-10 | Support exit status for exit/wait | Frans Kaashoek | 1 | -2/+10 | |
One test case for returning a exit status Passes usertests, but haven't used it to simplify tests | |||||
2019-08-19 | A few now unused DOC | Frans Kaashoek | 1 | -2/+2 | |
2019-08-18 | Cosmetic cleanup: fsinit reads sb and calls loginit. initialize icache | Frans Kaashoek | 1 | -4/+3 | |
in main.c and don't make it disk specific; the icache is shared. This doesn't matter since we have only one disk, but conceptually cleaner and maybe helpful to students for mount lab. | |||||
2019-07-27 | beautify console.c | Robert Morris | 1 | -0/+1 | |
2019-07-26 | trampin -> uservec | Robert Morris | 1 | -2/+2 | |
trampout -> userret | |||||
2019-07-25 | fix an exit/exit deadlock -> one more locking protocol violation | Robert Morris | 1 | -10/+14 | |
increase timer rate from 1/second to 10/second | |||||
2019-07-24 | rationalize some vm function names | Robert Morris | 1 | -3/+3 | |
2019-07-24 | no more PAGEBREAK | Robert Morris | 1 | -3/+0 | |
2019-07-23 | simplify kernel mapping calls | Robert Morris | 1 | -6/+12 | |
2019-07-23 | a few core -> CPU | Robert Morris | 1 | -1/+1 | |
get rid of PDF generating support | |||||
2019-07-22 | fix mapkstack | Frans Kaashoek | 1 | -2/+2 | |
2019-07-22 | -MD and TRAPFRAME | Robert Morris | 1 | -3/+3 | |
2019-07-22 | Merge branch 'riscv-kstack' into riscv | Frans Kaashoek | 1 | -13/+7 | |
2019-07-20 | not much | Robert Morris | 1 | -5/+4 | |
2019-07-20 | pi for pipe, rather than p, to avoid confusion with proc's p->lock | Robert Morris | 1 | -17/+10 | |
2019-07-20 | not much | Robert Morris | 1 | -2/+2 | |
2019-07-19 | it's not clear that the release will always enable interrupts | Robert Morris | 1 | -3/+3 | |
2019-07-19 | with per-proc locks, we don't need the intr_on() inside the loop. | Robert Morris | 1 | -3/+3 | |
2019-07-19 | One way of supporting a guard page below kstack: allocate kstacks in | Frans Kaashoek | 1 | -13/+7 | |
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-16 | conservatively call sfence.vma before every satp load. | Robert Morris | 1 | -1/+1 | |
2019-07-10 | nits | Robert Morris | 1 | -1/+3 | |
2019-07-10 | more comment cleanup | Robert Morris | 1 | -24/+30 | |
2019-07-10 | have kill() lock before looking at p->pid | Robert Morris | 1 | -22/+27 | |
document wait()'s use of np->parent w/o holding lock. | |||||
2019-07-10 | tweak some comments. | Robert Morris | 1 | -12/+8 | |
2019-07-08 | holding p->lock all the way through state=RUNNABLE means we don't need EMBRYO | Robert Morris | 1 | -11/+6 | |
2019-07-07 | eliminate ptable. ptable.lock -> pid_lock. | Robert Morris | 1 | -15/+14 | |
2019-07-07 | nits | Robert Morris | 1 | -10/+11 | |
2019-07-07 | avoid a double-lock of initproc->lock if child of init is reparenting | Robert Morris | 1 | -2/+5 | |
2019-07-06 | Maybe fix two races identified by rtm (thx!): | Frans Kaashoek | 1 | -12/+20 | |
- 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-04 | x | Frans Kaashoek | 1 | -1/+1 | |
2019-07-03 | Simplify wakeup1 | Frans Kaashoek | 1 | -11/+5 | |
2019-07-03 | Apply some corresponding bug fixes from wq branch here | Frans Kaashoek | 1 | -27/+25 | |
2019-07-02 | Fix a lost wakeup bug: the disk driver's wakeup() can run after the | Frans Kaashoek | 1 | -65/+50 | |
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-02 | Merge branch 'riscv' into riscv-proc | Frans Kaashoek | 1 | -13/+31 | |