cvs commit: src/sys/vm vm_glue.c

Bruce Evans bde at FreeBSD.org
Thu Jan 29 04:35:12 PST 2004


bde         2004/01/29 04:35:11 PST

  FreeBSD src repository

  Modified files:
    sys/vm               vm_glue.c 
  Log:
  Fixed breakage of scheduling in rev.1.29 of subr_4bsd.c.  The
  "scheduler" here has very little to do with scheduling.  It is actually
  the swapper, and it really must be the last SYSINIT'ed item like its
  comment says, since proc0 metamorphoses into swapper by calling
  scheduler() last in mi_start(), and scheduler() never returns..  Rev.1.29
  of subr_4bsd.c broke this by adding another SI_ORDER_FIRST item
  (kproc_start() for schedcpu_thread() onto the SI_SUB_RUN_SCHEDULER_LIST.
  The sorting of SYSINITs with identical orders (at all levels) is
  apparently nondeterministic, so this resulted in schedule() sometimes
  being called second last and schedcpu_thread() not being called at all.
  
  This quick fix just changes the code to almost match the comment
  (SI_ORDER_FIRST -> SI_ORDER_ANY).  "LAST" is misspelled "ANY", and
  there is no way to ensure that there is only 1 very lst SYSINIT.
  A more complete fix would remove the SYSINIT obfuscation.
  
  Revision  Changes    Path
  1.188     +1 -1      src/sys/vm/vm_glue.c


More information about the cvs-src mailing list