udelay_sched() -> kthread_usleep()
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 15 Jul 2015 19:09:09 +0000 (15:09 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 16 Jul 2015 20:07:53 +0000 (16:07 -0400)
Both functions do the same thing, but were created at different times.
Only one can survive!  kthread_usleep() is a little more clear than
udelay_sched(), hence the change.

kern/arch/x86/init.c
kern/drivers/net/ether8169.c
kern/include/time.h
kern/src/monitor.c
kern/src/net/arp.c
kern/src/net/ethermedium.c
kern/src/net/loopbackmedium.c
kern/src/net/tcp.c
kern/src/ns/pgrp.c
kern/src/time.c
scripts/spatch/rendez.cocci

index bdd31cc..126d75b 100644 (file)
@@ -54,7 +54,7 @@ static void irq_console(struct hw_trapframe *hw_tf, void *data)
 static void cons_poller(void *arg)
 {
        while (1) {
-               udelay_sched(10000);
+               kthread_usleep(10000);
                irq_console(0, arg);
        }
 }
index 3942a17..f3aea84 100644 (file)
@@ -853,7 +853,7 @@ rtl8169attach(struct ether* edev)
        for(timeo = 0; timeo < 350; timeo++){
                if(miistatus(ctlr->mii) == 0)
                        break;
-               udelay_sched(10000);
+               kthread_usleep(10000);
        }
        phy = ctlr->mii->curphy;
        printd("%s: speed %d fd %d link %d rfc %d tfc %d\n",
index e43a8c7..548755c 100644 (file)
@@ -7,7 +7,6 @@
 
 void train_timing();
 void udelay(uint64_t usec);    /* done in arch-specific files */
-void udelay_sched(uint64_t usec);
 uint64_t tsc2sec(uint64_t tsc_time);
 uint64_t tsc2msec(uint64_t tsc_time);
 uint64_t tsc2usec(uint64_t tsc_time);
index 20866da..0f94453 100644 (file)
@@ -899,7 +899,7 @@ static void pm_flusher(void *unused)
        /* could also put the delay between calls, or even within remove, during the
         * WB phase. */
        while (1) {
-               udelay_sched(5000);
+               kthread_usleep(5000);
                TAILQ_FOREACH(sb, &super_blocks, s_list) {
                        TAILQ_FOREACH(inode, &sb->s_inodes, i_sb_list) {
                                nr_pages = ROUNDUP(inode->i_size, PGSIZE) >> PGSHIFT;
index 0970b90..c1a2ffa 100644 (file)
@@ -681,7 +681,7 @@ static void rxmitproc(void *v)
                if (wakeupat == 0)
                        rendez_sleep(&arp->rxmtq, rxready, v);
                else if (wakeupat > ReTransTimer / 4)
-                       udelay_sched(wakeupat * 1000);
+                       kthread_usleep(wakeupat * 1000);
        }
        poperror();
 }
index 5e2ac1f..88d6ffe 100644 (file)
@@ -301,8 +301,9 @@ static void etherunbind(struct Ipifc *ifc)
 #endif
 
        /* wait for readers to die */
-       while (er->arpp != 0 || er->read4p != 0 || er->read6p != 0) ;
-       udelay_sched(300 * 1000);
+       while (er->arpp != 0 || er->read4p != 0 || er->read6p != 0)
+               cpu_relax();
+       kthread_usleep(300 * 1000);
 
        if (er->mchan4 != NULL)
                cclose(er->mchan4);
index 1fa6d38..fdb3455 100644 (file)
@@ -54,7 +54,7 @@ static void loopbackunbind(struct Ipifc *ifc)
 
        /* wait for reader to die */
        while (lb->readp != 0)
-               udelay_sched(300 * 1000);
+               kthread_usleep(300 * 1000);
 
        /* clean up */
        qfree(lb->q);
index 1f064b9..fd80f87 100644 (file)
@@ -649,7 +649,7 @@ void tcpackproc(void *a)
        priv = tcp->priv;
 
        for (;;) {
-               udelay_sched(MSPTICK * 1000);
+               kthread_usleep(MSPTICK * 1000);
 
                qlock(&priv->tl);
                timeo = NULL;
index 59aacfe..33d84ad 100644 (file)
@@ -269,7 +269,7 @@ almost certainly not needed.void resrcwait(char *reason)
                printd("%s\n", reason);
        }
 
-       udelay_sched(300 * 1000);
+       kthread_usleep(300 * 1000);
        up->psstate = p;
 }
 #endif
index f298ba7..654416d 100644 (file)
@@ -41,16 +41,6 @@ void train_timing()
        printk("TSC overhead (Min: %llu, Max: %llu)\n", min_overhead, max_overhead);
 }
 
-void udelay_sched(uint64_t usec)
-{
-       struct timer_chain *tchain = &per_cpu_info[core_id()].tchain;
-       struct alarm_waiter a_waiter;
-       init_awaiter(&a_waiter, 0);
-       set_awaiter_rel(&a_waiter, usec);
-       set_alarm(tchain, &a_waiter);
-       sleep_on_awaiter(&a_waiter);
-}
-
 /* Convenience wrapper called when a core's timer interrupt goes off.  Not to be
  * confused with global timers (like the PIC).  Do not put your code here.  If
  * you want something to happen in the future, set an alarm. */
index be646bd..962cacf 100644 (file)
@@ -13,7 +13,7 @@ expression RV;
 expression RVTO;
 @@
 -tsleep(RV, return0, 0, RVTO);
-+udelay_sched(RVTO * 1000);
++kthread_usleep(RVTO * 1000);
 
 // and then this one catches all real usage of rendez_sleep_timeout
 @@