summaryrefslogtreecommitdiff
path: root/kernel/proc.c
AgeCommit message (Collapse)Author
2021-01-31With only RISCV64-I extensionAditya Naik
2020-11-05proc_tree_lock -> wait_lockRobert Morris
2020-11-05don't over-lock in exit()Robert Morris
2020-11-05oopsRobert Morris
2020-11-05Frans' proc_lock.Robert Morris
2020-11-05free proc if kalloc failsRobert Morris
2020-10-14kvmmake() makes a complete kernel page table, matching Figure 3.3Frans Kaashoek
2020-08-17handle another out-of-memory in fork(). the policy here is not consistent,Robert Morris
since other calls (e.g. exec()) panic on out of memory.
2020-08-17try to handle a few of the possible out-of-memory errors in fork()Robert Morris
2020-08-17modify uvmunmap() to be in aligned pagesRobert Morris
fix a bug in fork() recovering from out of memory
2020-08-10Merge pull request #9 from d0iasm/riscvFrans Kaashoek
update initcode to avoid using the compressed extension
2020-08-10modify each page in usertests countfree()Robert Morris
get rid of static for walk() and freewalk()
2020-08-10cpu->scheduler -> cpu->context to reduce confusionRobert Morris
2020-08-10rename p->tf to p->trapframe, for consistency with p->contextRobert Morris
2020-03-20update initcode to avoid using the compressed extensionAsami Doi
2019-10-27fix a potential memory leakRobert Morris
2019-10-16nitsRobert Morris
2019-09-23story is more complex than I thought.Robert Morris
2019-09-23bug fix: reparent() sometimes deadlockedRobert Morris
bug fix: exit() sometimes released a different parent lock than it acquired usertests
2019-09-20don't panic if a program frees all its memory with sbrk().Robert Morris
if a program sbrk()'s to a non-page-boundary, don't free that page. corresponding usertests.
2019-09-10Support exit status for exit/waitFrans Kaashoek
One test case for returning a exit status Passes usertests, but haven't used it to simplify tests
2019-08-19A few now unused DOCFrans Kaashoek
2019-08-18Cosmetic cleanup: fsinit reads sb and calls loginit. initialize icacheFrans Kaashoek
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-27beautify console.cRobert Morris
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-24rationalize some vm function namesRobert Morris
2019-07-24no more PAGEBREAKRobert Morris
2019-07-23simplify kernel mapping callsRobert Morris
2019-07-23a few core -> CPURobert Morris
get rid of PDF generating support
2019-07-22fix mapkstackFrans Kaashoek
2019-07-22-MD and TRAPFRAMERobert Morris
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-19with per-proc locks, we don't need the intr_on() inside the loop.Robert 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-16conservatively call sfence.vma before every satp load.Robert Morris
2019-07-10nitsRobert Morris
2019-07-10more comment cleanupRobert 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-04xFrans Kaashoek