The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: Andreas Dilger <adilger@turbolabs.com>
To: torvalds@transmeta.com, Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: linux-kernel@vger.kernel.org, acme@conectiva.com.br
Subject: [PATCH] net/core/dev.c jiffies cleanup
Date: Sat, 3 Nov 2001 16:29:15 -0700	[thread overview]
Message-ID: <20011103162914.A12523@lynx.no> (raw)

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).

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
http://sourceforge.net/projects/ext2resize/
http://www-mddsp.enel.ucalgary.ca/People/adilger/


             reply	other threads:[~2001-11-05 16:34 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-11-03 23:29 Andreas Dilger [this message]
2001-11-05 16:55 ` [PATCH] net/core/dev.c jiffies cleanup Arnaldo Carvalho de Melo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20011103162914.A12523@lynx.no \
    --to=adilger@turbolabs.com \
    --cc=acme@conectiva.com.br \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@transmeta.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox