[PATCH] Real-Time Preemption, using msecs_to_jiffies() instead ofHZ

From: Luca Falavigna
Date: Sat Jun 11 2005 - 06:48:19 EST


Hi,

I was looking at kernel/softlookup.c when I noticed you used HZ in order to get
a 10-second delay:

void softlockup_tick(struct pt_regs *regs)
{
...
if (time_after(jiffies, timestamp + 10*HZ)) {
...
}

I created this small patch (built against version 2.6.12-rc6-V0.7.48-05) which
does use of msecs_to_jiffies() to get a correct behaviour with every platform.
Similarly I modified function watchdog and kernel/irq/autoprobe.c file
(probe_irq_on function).

Here is the patch:

--- ./rtp-2.6.12-rc6-V0.7.48-05.orig 2005-06-10 16:27:48.000000000 +0000
+++ ./rtp-2.6.12-rc6-V0.7.48-05 2005-06-10 16:30:18.000000000 +0000
@@ -7425,7 +7425,7 @@
+ /*
+ * Wait for longstanding interrupts to trigger, 20 msec delay:
+ */
-+ msleep(HZ/50);
++ msleep(msecs_to_jiffies(20));

/*
* enable any unassigned irqs
@@ -7452,7 +7452,7 @@
*/
- for (delay = jiffies + HZ/10; time_after(delay, jiffies); )
- /* about 100ms delay */ barrier();
-+ msleep(HZ/10);
++ msleep(msecs_to_jiffies(100));

/*
* Now filter out any obviously spurious interrupts
@@ -10712,7 +10712,7 @@
+ if (did_panic)
+ return;
+
-+ if (time_after(jiffies, timestamp + 10*HZ)) {
++ if (time_after(jiffies, timestamp + msecs_to_jiffies(10000))) {
+ per_cpu(print_timestamp, this_cpu) = timestamp;
+
+ spin_lock(&print_lock);
@@ -10748,7 +10748,7 @@
+ */
+ while (!kthread_should_stop()) {
+ set_current_state(TASK_INTERRUPTIBLE);
-+ msleep_interruptible(HZ);
++ msleep_interruptible(msecs_to_jiffies(1000));
+ touch_softlockup_watchdog();
+ }
+ __set_current_state(TASK_RUNNING);



Regards,

--
Luca



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/