Re: hrtimer_nanosleep() weirdness...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Peter Barada wrote:
I'm using an hrtimer in my tsc2004 touch driver to sleep between samples
for 7.5mSec.  Here's the essence of the inner loop that grabs samples:

for (;;) {
	// Get a point, pass it to input_report_abs...
	pen_is_down = tsc2004_get_point(d);

	// If pen is up up, then break out
	if (!pen_is_down || signal_pending(tsk))
	break;

	{
		struct timespec timeout;
		// sleep for 7.5 mSec (giving max 133 touch/sec)
		timeout = ns_to_timespec(75 * 100 * 1000);
		hrtimer_nanosleep(&timeout, NULL, HRTIMER_MODE_REL, CLOCK_MONOTONIC);
	}
}

What's really strange is when I use ts_test to measure sample rate, I
see:
OMAP-Torpedo# export TSLIB_TSDEVICE=/dev/input/event0
OMAP-Torpedo# export TSLIB_CONSOLEDEVICE=none
OMAP-Torpedo# ts_test
717.804687:    176    161    234
717.813446:    176    161    234
717.822265:    176    160    234
717.993255:    178    159    234
718.002014:    179    158    234
718.188537:    180    158    234
719.015441:    181    157    234
719.165100:    181    157    234
719.360412:    182    157    234
719.369079:    182    157    234
719.438537:    182    156    234
719.555725:    182    156    234
719.564392:    182    156    234
719.751037:    180    155    234
719.768432:    179    155    234
719.777099:    178    154    234
719.946350:    174    150    234
720.000976:    175    144    234
720.141662:    184    140    234
720.336975:    189    138    234
720.490722:    195    137    234
720.499420:    198    138    234
720.858123:    198    139    234
720.922912:    198    139    234
721.126922:    198    139    234
721.135620:    198    139    234
721.144317:    198    139    234
721.152984:    198    139    234
721.161682:    198    139    234
721.313537:    198    139    234
721.438537:    198    138      0

Which shows over 3.63 seconds 33 samples, or only 9.08 samples/second,
including a max delay of .827 seconds (719.015441 - 718.188537).
But if I "ifup eth0" to bring the networking up (and nothing else is
running), I get:

Not sure,
but I think that you have introduced a new interrupt source and you have a pickahed of hrtimer in the irq_exit path that run sofirq.

Michael
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux