Messages in this thread |  | | Date | Mon, 5 Nov 2001 14:55:42 -0200 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [PATCH] net/core/dev.c jiffies cleanup |
| |
Em Sat, Nov 03, 2001 at 04:29:15PM -0700, Andreas Dilger escreveu: > Linus, Alan, > here is the first of the jiffies cleanups, this one of the files that > Tim Schmielau flagged as "suspicious" users of jiffies. Yes, I'm > selfish, I'll only be sending patches for now for drivers/subsystems > that I actually use. The jiffies audit should probably become an > item on the kernel janitor list of things to do (Arnaldo CC'd).
Sure, I'm CCing this message to the kjp mailing list so that volunteers can work on this.
> Some places in the network code are hairy users of jiffies values, > and it is not always clear that they are being used safely, but I > can only do my best. > > Where possible, I've also moved end-time calculations outside the > loop and removed some confusing uses of "now". > > Cheers, Andreas > ========================================================================= > --- linux/net/core/dev.c.orig Thu Oct 25 02:55:57 2001 > +++ linux/net/core/dev.c Fri Nov 2 22:47:49 2001 > @@ -1407,7 +1407,7 @@ > { > int this_cpu = smp_processor_id(); > struct softnet_data *queue = &softnet_data[this_cpu]; > - unsigned long start_time = jiffies; > + unsigned long end_time = jiffies + 1; > int bugdet = netdev_max_backlog; > > br_read_lock(BR_NETPROTO_LOCK); > @@ -1504,7 +1504,7 @@ > > dev_put(rx_dev); > > - if (bugdet-- < 0 || jiffies - start_time > 1) > + if (bugdet-- < 0 || time_after(jiffies, end_time)) > goto softnet_break; > > #ifdef CONFIG_NET_HW_FLOWCONTROL > @@ -2585,7 +2585,7 @@ > > int unregister_netdevice(struct net_device *dev) > { > - unsigned long now, warning_time; > + unsigned long notify_time, warning_time; > struct net_device *d, **dp; > > /* If device is running, close it first. */ > @@ -2686,20 +2686,21 @@ > > */ > > - now = warning_time = jiffies; > + notify_time = jiffies + 1*HZ; > + warning_time = jiffies + 10*HZ; > while (atomic_read(&dev->refcnt) != 1) { > - if ((jiffies - now) > 1*HZ) { > + if (time_after(jiffies, notify_time)) { > /* Rebroadcast unregister notification */ > notifier_call_chain(&netdev_chain, NETDEV_UNREGISTER, dev); > } > current->state = TASK_INTERRUPTIBLE; > schedule_timeout(HZ/4); > current->state = TASK_RUNNING; > - if ((jiffies - warning_time) > 10*HZ) { > - printk(KERN_EMERG "unregister_netdevice: waiting for %s to " > - "become free. Usage count = %d\n", > + if (time_after(jiffies, warning_time)) { > + printk(KERN_EMERG "unregister_netdevice: waiting for %s" > + " to become free. Usage count = %d\n", > dev->name, atomic_read(&dev->refcnt)); > - warning_time = jiffies; > + warning_time = jiffies + 10*HZ; > } > } > dev_put(dev); > -- > Andreas Dilger - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |