BSD 4_3_Net_2 release
[unix-history] / usr / src / usr.sbin / amd / amd / sched.c
index 8c03107..60f73c0 100644 (file)
@@ -1,6 +1,4 @@
 /*
 /*
- * $Id: sched.c,v 5.2.1.3 91/03/17 17:42:03 jsp Alpha $
- *
  * Copyright (c) 1990 Jan-Simon Pendry
  * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
  * Copyright (c) 1990 The Regents of the University of California.
  * Copyright (c) 1990 Jan-Simon Pendry
  * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
  * Copyright (c) 1990 The Regents of the University of California.
@@ -9,9 +7,38 @@
  * This code is derived from software contributed to Berkeley by
  * Jan-Simon Pendry at Imperial College, London.
  *
  * This code is derived from software contributed to Berkeley by
  * Jan-Simon Pendry at Imperial College, London.
  *
- * %sccs.include.redist.c%
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *     @(#)sched.c     5.3 (Berkeley) 5/12/91
+ *
+ * $Id: sched.c,v 5.2.1.5 91/05/07 22:18:32 jsp Alpha $
  *
  *
- *     @(#)sched.c     5.2 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
@@ -113,9 +140,9 @@ voidp wchan;
         * Allocate a new task
         */
        pjob *p = sched_job(cf, ca);
         * Allocate a new task
         */
        pjob *p = sched_job(cf, ca);
-#ifdef DEBUG
-       /*dlog("sleep(%#x)", wchan);*/
-#endif /* DEBUG */
+#ifdef DEBUG_SLEEP
+       dlog("SLEEP on %#x", wchan);
+#endif
        p->wchan = wchan;
        p->pid = 0;
        bzero((voidp) &p->w, sizeof(p->w));
        p->wchan = wchan;
        p->pid = 0;
        bzero((voidp) &p->w, sizeof(p->w));
@@ -133,13 +160,15 @@ void wakeup(wchan)
 voidp wchan;
 {
        pjob *p, *p2;
 voidp wchan;
 {
        pjob *p, *p2;
-
+#ifdef DEBUG_SLEEP
+       int done = 0;
+#endif
        if (!foreground)
                return;
 
        if (!foreground)
                return;
 
-#ifdef DEBUG
+#ifdef DEBUG_SLEEP
        /*dlog("wakeup(%#x)", wchan);*/
        /*dlog("wakeup(%#x)", wchan);*/
-#endif /* DEBUG */
+#endif
        /*
         * Can't user ITER() here because
         * wakeupjob() juggles the list.
        /*
         * Can't user ITER() here because
         * wakeupjob() juggles the list.
@@ -147,9 +176,18 @@ voidp wchan;
        for (p = FIRST(pjob, &proc_wait_list);
                        p2 = NEXT(pjob, p), p != HEAD(pjob, &proc_wait_list);
                        p = p2) {
        for (p = FIRST(pjob, &proc_wait_list);
                        p2 = NEXT(pjob, p), p != HEAD(pjob, &proc_wait_list);
                        p = p2) {
-               if (p->wchan == wchan)
+               if (p->wchan == wchan) {
+#ifdef DEBUG_SLEEP
+                       done = 1;
+#endif
                        wakeupjob(p);
                        wakeupjob(p);
+               }
        }
        }
+
+#ifdef DEBUG_SLEEP
+       if (!done)
+               dlog("Nothing SLEEPing on %#x", wchan);
+#endif
 }
 
 void wakeup_task(rc, term, cl)
 }
 
 void wakeup_task(rc, term, cl)