plan 9 kernel history: overview | file list | diff list

(regexp matches against, e.g., port/chan.c 1999/0101)

port/proc.c   1990/0227    Created.
  1990/03013    Print both pids involved in double-sleep.
  1990/03081    Use c to as current process instead of u->p. Add explicit process hierarchy a la Unix.
  1990/0309    Initialize p->pop in newproc.
  1990/03091    Allocate process locks all at once rather than on-demand at possibly bad times.
  1990/0310    Remove lock allocation loop after all.
  1990/0312    Print segments in debugging process list.
  1990/0322    Merge Proc.wait.use and Proc.wait.queue into single lock Proc.wait.
  1990/0324    Split Proc.wait back into Proc.wait.use and Proc.wait.queue.
  1990/0330    Remove segments from debugging process list.
  1990/0424    Code rearrangement: move lastvar declaration in kproc.
  1990/0509    Keep at most NBROKEN Broken processes around.
  1990/0614    Store time in milliseconds, not ticks (BUG FIX?)
  1990/0617    Use kmap in postnote to access Proc.upage.
  1990/0619    Set u->p->state = Wakeme before sleeping for more procs in newproc. (BUG FIX)
  1990/0629    Print p->r pointer in process dump.
  1990/0704    Print user names in process dump.
  1990/0722    Reset p->fpstate in newproc (BUG FIX?). Use kernel pgrp for all kprocs (was using u->p's).
  1990/0726    Cancel alarm after wakeup. (BUG FIX?)
  1990/0728    Don't cancel alarm after wakeup. (BUG FIX?)
  1990/0731    Add pc argument to m->intr function.
  1990/0801    Add unusepage of Proc.upage when freeing process. (BUG FIX?)
  1990/1101    Move broken process code into new addbroken. Add freebroken.
  1990/11211    Remove Chan* argument to error.
  1990/1124    Remove process hierarchy.
  1990/1211    Add invalidateu function, save, restore, clearmmucache.
  1990/1212    Move unusepage out of sched (deadlock BUG FIX). Rename save, restore to procsave, procrestore. Set p->kp for kprocs.
  1990/1220    Proper function prototype for DEBUG function.
  1990/1227    Add anyready.
  1991/0109    Avoid kmap of upage when it's our own.
  1991/0110    Save exit msg before dropping memory space (BUG FIX).
  1991/0209    Stop calling m->intr in sched.
  1991/0317    Clear p->pgrp in newproc (BUG FIX).
  1991/0318    Use memmove instead of memcpy.
  1991/0420    Split runq into runhiq, runloq.
  1991/0425    Add m->cs statistic. Clear p->kp in newproc (BUG FIX? only if any kprocs exit).
  1991/0430    Something about pidonmach and locking XXX.
  1991/0501    Code reformatting: blank line.
  1991/0507    Something about pidonmach. XXX
  1991/0513    Reset u->p->alarm in pexit (BUG FIX?)
  1991/0517    Close file descriptors before freeing memory (why? XXX)
  1991/0523    Handle u==0 in kmap case in postnote (BUG FIX).
  1991/0529    Comment why clearmmucache and flushmmu in fork.
  1991/0608    Rename DEBUG to procdump.
  1991/0705    Add Stopped. Formatting changes, extra comments.
  1991/0710    Move error routines into portable code.
  1991/0712    Don't close nil fgrp, egrp. (BUG FIX)
  1991/0717    Comment fixes. Avoid race in putseg cleanup (BUG FIX?)?
  1991/0720    Avoid deref nil in process dump.
  1991/0721    Remove bracketing prints in process dump.
  1991/0727    New sleep and wakeup: replace wokeup with notepending.
  1991/0805    postnote: only reset r->p if its us (seems dodgy? what's the race?)
  1991/0806    Add Rendez state, break out of rendezvous in postnote.
  1991/0807    More debugging print changes.
  1991/0810    Drop lock before erroring out when process disappears in postnote (BUG FIX).
  1991/0820    Set up->p after clearing up, so that u->p = p not needed after initial setlabel. (pseudo-BUG FIX).
  1991/0830    More debugging prints.
  1991/0906    Check p->mach to see if p is running (BUG FIX).
  1991/0919    Avoid compiler-induced bug because setlabel/gotolabel finds wrong variable. (BUG FIX)
  1991/0926    Remove Zombie, MMUing, Exiting, Inwait states.
  1991/1003    Replace manual upage deallocation with simpleputpage.
  1991/1005    Only prepare wait messages for non-kprocs.
  1991/1006    Only prepare wait messages for non-kprocs (2).
  1991/1007    Remove call to flushvirt when process breaks. (XXX why?)
  1991/1024    Close pgrp, egrp, and dot early (XXX why? just cleaner? actually needed?)
  1991/1105    Remove user name from Pgrp, add to Proc.
  1991/1108    Set Proc.psstate to "Stopped" while stopped.
  1991/1109    Add Proc.procmode. Replace "bootes" with eve.
  1991/1110    Rewrite goto in newproc as for loop. Call resrcwait instead of manual sleeping.
  1991/1112    Set Proc.procmode in kproc (XXX why?).
  1991/1115    Shuffle SET/USED around.
  1991/1120    Clean duplicate code in postnote.
  1991/1127    Silence compiler warning.
  1991/1215    Remove child accumulated times from wait message.
  1991/1216    Make p->debug a qlock.
  1991/1218    Add Proc.text and Proc.pid to non-empty exit status in pexit.
  1992/0103    Remove clearmmucache in fork. (XXX why?)
  1992/0111    Move error.h to ../port. Change errors to actual strings.
  1992/0114    Add Eprocdied error.
  1992/0115    Only save wait information if have a parent.
  1992/0120    Remove unneeded .
  1992/0122    Put process state in Proc structure instead of using stack variable in sched.
  1992/0205    Report sum of children's and process's time in wait message.
  1992/0301    The Grim Reaper lays waste the bodies of the dead.
  1992/0303    Panic if boot process dies.
  1992/0309    Use Ref for pidalloc. Keep wait message in text form.
  1992/0319    Add panic in wakeup if p->sched.pc is bad.
  1992/0321    Move lib.h to ../port.
  1992/0328    Add panic in proctab.
  1992/0428    Add Proc.noteid.
  1992/0519    Add splhi calls to sleep, tsleep around checks of r->p. (BUG FIX?)
  1992/0520    Silence compiler warnings.
  1992/0527    Succeed if process is missing in postnote.
  1992/0602    Rewrite tsleep to avoid explicit Alarm structures. Now alarm info is in Proc. New tsleep can call regular sleep, avoiding duplicate implementation.
  1992/0603    Change runproc to be always called splhi. (BUG FIX?)
  1992/0604    Fix error prototype (char[] to char*).
  1992/0609    Document procctl called splhi, add spllo before pexit, add splhi after sched. (BUG FIXes?)
  1992/0617    Add tfn to handle very quick alarms in tsleep. (BUG FIX)
  1992/0619    Formatting. Call xalloc instead of ialloc.
  1992/0620    Remove explicit wait structure list. Just use malloc.
  1992/0622    Remove busy loop in runproc.
  1992/0701    Take self out of talarm.list if checkalarm didn't. (BUG FIX).
  1992/0703    Move lastvar to last. Drop user from process text name.
  1992/0711    Remove unused variables.
  1992/0805    Add waserror/poperror around smalloc (smalloc can error??? XXX).
  1992/0902    Print exit string of dying boot process.
  1992/0909    Document wakeup requirement that only one process can call it.
  1992/1206    Code rearrangement. Call ready(p) while holding p->pgrp lock. (BUG FIX?)
  1992/1208    Only free a single broken process in freebroken. (BUG: != should be ==.)
  1992/1225    Correct test in freebroken (BUG FIX).
  1993/0112    Print when sending notes to kprocs.
  1993/0216    In postnote, only ready(p) if it is found in the rendezvous lists (BUG fix? avoids double-ready).
  1993/0309    Add qwaitr lock in pwait. (XXX why?)
  1993/0501    Rewrite sched - remove upage. Much code cleanup, converting u->p to up.
  1993/0528    Bus contention games.
  1993/0729    Call kmapinval in sched.
  1993/0731    Don't call kmapinval in sched.
  1993/0801    Call kmapinval in sched.
  1993/0804    Don't call kmapinval in sched.
  1993/0829    Formatting edits.
  1993/0830    Bus contention games.
  1993/0904    No change.
  1993/1123    Add killbig.
  1993/1201    Add per-process counters, including TLB fault counter and countext switch counter. Clear counters and syscall args in newproc.
  1993/1204    Remove Schedq definition (now in portdat.h). Add per-mach runqs.
  1993/1212    Formatting edit. Check m->runq.head in anyready.
  1993/1214    Remove TLB fault counter. Add hi, lo run queue for each mach.
  1993/1215    Remove runloq. Count number ready on each queue.
  1994/0311    Add per-mach callbacks.
  1994/0320    Move anyready up.
  1994/0321    Move anyready down.
  1994/0322    Don't initialize per-mach callbacks in schedinit.
  1994/0324    Return whether runq's are empty in newcallback (XXX why?)
  1994/0325    Don't return scheduling info in newcallback.
  1994/0406    Change process dump.
  1994/0407    Allocate p->syscall buffer for each process (nsyscall determined after build time).
  1994/0508    Remove callbacks.
  1994/0612    Remove counter, syscall arrays.
  1994/0725    Rebalance proc each time we preempt it (call balance).
  1994/0727    Use runhiq for high-priority processes.
  1994/0728    Change scheduler to five-level run queues. No longer per-mach.
  1994/0729    Faster anyready.
  1994/0805    Print debugging info about talarm loops.
  1994/0808    Always adjust priority while running (pseudo-BUG fix).
  1994/0809    Add anyready0, debugging print.
  1994/0810    Add p->readyticks for debugging print.
  1994/0812    Add Proc.rgrp. Remove talarm loop check.
  1994/0816    Set Nrq in portdat.h.
  1994/0817    Add lastreadied to preempt only when higher-priority guys are waiting.
  1994/0830    Don't print the empty run queues.
  1994/0914    Add Schedq structure.
  1994/0915    Invert priorities.
  1994/0917    Use weighted average to compute run-time priorities.
  1994/0918    Rename readyticks to readytime.
  1994/0920    Update priorities for processes sleeping a long time.
  1994/1027    Add renameuser for when eve changes.
  1995/0101    Be more careful about accessing rq->head without a lock.
  1995/0102    New scheduler: back to a single runq, procs can be hard-wired to particular machs.
  1995/0104    Various code cleanup.
  1995/0105    Remove nrdy in favor of runq.n.
  1995/0106    Return boolean in anyhigher (BUG fix? if runq.n somehow got to zero?).
  1995/0107    Go back to simpler anyhigher. Anyhigher is now any higher or same.
  1995/0108    Only clear p->yield if it is nonzero. (How can this matter? XXX)
  1995/0109    More complicated anyhigher.
  1995/0110    New scheduler: back to old multi-run-queue scheduler, with some tweaks.
  1995/0112    Update comment about locks held from pexit. Restore spl state after stopping proc in procctl.
  1995/0115    New Proc.ureg.
  1995/0126    Remove prints about sleeping or erroring splhi.
  1995/0215    Add Proc_exitbig, separate from Proc_exitme, to set exit status.
  1995/0329    Be sure to NUL-terminate wait message (BUG fix).
  1995/0811    Change m to MACHP(m->machno) to accomodate VM tricks.
  1995/0910    Add randomcount to attempt to capture randomness.
  1995/0912    Reformat randomcount.
  1995/0913    Remove randomcount.
  1995/1009    New process dump format.
  1995/1024    New process dump format.
  1995/1030    New process dump format, new scheduling dump.
  1995/1111    Lock palloc going into moribund sched
  1995/1230    Lock palloc for moribund sched.
  1996/0121    Wake up up->waitr when exiting, so that children waiting for us to notice them can give up. (BUG FIX).
  1996/0315    Yet another scheduling policy in runproc].
  1996/0426    Clear p->error in newproc.
  1996/0511    Add PriLock to avoid lock inversion.
  1996/0516    More avoidance of lock inversion.
  1996/0522    Initialize Proc.lockpri in newproc.
  1996/0523    More avoidance of lock inversion.
  1996/0626    Use p->nnote instead of up->nnote in postnote. Three year old BUG FIX!
  1996/1016    Add up->rlock for sleep/wakeup.
  1996/1017    Do not lock(r) in sleep/wakeup.
  1997/0220    Add coherence calls to force correctness on looser memory architectures (bug fix?).
  1997/0327    Formatting edits. Change close to cclose.
  1997/0821    In runproc, void lock(runq) while splhi.
  1997/1104    In pexit, nil the up->fgrp pointer before calling closefgrp, in case closefgrp manages to get back into pexit (bug fix?)
  1998/0325    Add QueueingW.
  1998/0425    Bug fix: lock p->debug while closing fgrp to avoid race with /proc/n/fd.
  1998/0508    Bug fix: in sleep, if we get interrupted between sleep1 and sched, undo the effects of the sleep1. Otherwise an inopportune interrupt during the error(Eintr) processing could call sched for us, putting us to sleep for good.
  1998/0510    Add splx(s) in sleep1. Not needed: in sleep, either notepending == 0 the first time, in which case we call sched and go spllo, or notepending == 1 the second time, in which case we call error and go spllo. Either way we're coming out spllo.
  1998/0511    In sleep, only back out and set up->state = Running if the state is currently Wakeme.
  1998/0512    Whitespace edit. Debugging: print more about panic in postnote.
  1998/0513    Merge sleep1 and sleep. (XXX Bug fixes and other changes?)
  1998/0514    Recomment sleep, wakeup, and postnote. No code changes.
  1998/0603    Tune scheduler: change movetime from HZ/2 to HZ/10.
  1998/0604    Bug fix?: remove livelock priority hack.
  1998/0605    Note that pexit is also holding the palloc lock.
  1998/0606    Lower lock priority. Fairer scheduler. Bug fix.
  1998/0724    Comment edit.
  1998/0725    Add procflushseg.
  1998/0806    Add state QueueingR.
  1998/0825    Bug fix: print format.
  1998/0901    Yet another runproc implementation.
  1998/0923    Bug fix: in the "fair" scheduling case, if we find a process to run, actually run it.
  1999/0108    Bug fix? In pexit, lock up->seglock around segment cleanup.
  1999/0110    More process dump changes.
  1999/0326    Remove lastreadied: check all run queues again. (Bug fix? If priorities changed during a clock tick, lastreadied was not updated.)
  1999/0327    Call idlehands to put the processor to sleep if there's no one to wake (Bug? in the wrong place?).
  1999/0711    Only move processes that aren't wired. Use Proc.wired instead of separate wired array.
  1999/0811    Bug fix: use MACHP(0)->ticks, not m->ticks, for scheduling decisions.
  2000/0115    Bug fix: avoid using MS2TK on huge sleep times.
  2000/0116    Comment edit.
  2000/0129    Zero out up->twhen if sleep errors out.
  2000/0325    Safety first: nil out up->egrp, up->rgrp, up->dot, and up->pgrp after closing them.
  2000/0331    Bug fix? nil out all fields under lock before closing them.
  2000/0519    Comment out kproc postnote print.
  2000/0714    Give Procalloc struct a tag.
  2000/0919    New sleep, wakeup, postnote. Locks r, so can avoid explicit coherence calls once more.
  2000/1018    Set p->newtlb to cause flush. (Bug fix?)
  2000/1026    Rename FPinit to FPINIT.
  2000/1027    Rename FPINIT to FPinit.
  2000/1106    Flush output buffer during process dump.
  2000/1130    Bug fix: move idlehands to correct location.
  2001/0207    In wakeup return the actual proc that woke up instead of a flag.
  2001/0217    Use "kproc" for psstate in kprocs.
  2001/0315    Add Proc.fixedpri to scheduler.
  2001/0510    Add hash table to find proc by pid.
  2001/0527    Make procalloc, pidalloc, and runq static.
  2001/0529    In wakeup, remove unnecessary rv variable.
  2001/0717    Print about kproc notes and ignore them.
  2001/0802    Remove Proc.nchild. Initialize Proc.parent in newproc.
  2001/0819    Wait messages are in binary again.
  2001/0822    Add Proc.syserror to hold last system call error.
  2001/0924    More efficient Proc.syserror: use two buffers and swap pointers.
  2001/1117    Add Proc.privatemem.
  2001/1218    Don't ignore postnote to kprocs anymore.
  2002/0114    Bug fix: print format.
  2002/0228    Reduce number of scheduling quanta.
  2002/0315    Move Schedq back into portdat.h.
  2002/0326    Add safe ms2tk. Bug: rounding is wrong.
  2002/0328    Add Proc.lockwait.
  2002/0329    Bug fix: correct rounding in ms2tk.
  2002/0402    Remove EDF scheduler.
  2002/0403    Delay sched if process would be preempted while holding locks.
  2002/0404    Add EDF scheduler back, along with scheduling event log debugging.
  2002/0406    Remove debugging event log.
  2002/0410    Remove ../port/edf.h. Move EDF functions to regular headers.
  2002/0413    Debugging: save error context in errlab[NERR-1]. (Not guaranteed to be valid.)
  2002/0414    Remove Proc.delaysched, but still delay scheds during locks.
  2002/0415    Select process for moving at move time, not just after.
  2002/0416    Proc.delaysched is back.
  2002/0420    Panic if sched during ilock.
  2002/0501    Store wait time in milliseconds, not ticks.
  2002/0502    Add Proc.noswap.
  2002/0506    Do not kill "kfs" process in killbig.
  2002/0626    More information about ilock sched panic.
  2002/0704    Add new Edfinterface to allow empty EDF stub routines.
  2002/0710    Remove ms2tk (now in XXX.c). Use new safe tk2ms for waitmsg times.
  2002/0821    Keep track of how long each processor spends idling.
  2002/0822    Use perfticks instead of fastticks for idle stats.
  2002/0925    More info in sched/ilock panic.
  2002/1010    Only set m->perf.period if nonzero. (Bug fix?)
  2002/1104    Add Proc.setargs.
  2003/0214    Add unfair to turn off fair scheduling (for debugging).
  2003/0226    Remove unfair scheduling.
  2003/0228    New many-run-queue scheduler.
  2003/0301    Scheduling tweak: even prioritized processes get penalized for running too long.
  2003/0314    Add yield.
  2003/0316    Add rebalance to move processes into new scheduling queues.
  2003/0319    Comment edits.
  2003/0406    Formatting edits.


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)