Re: getting timestamp of last interrupt?

From: Hans-Georg Thien
Date: Mon Oct 06 2003 - 16:59:57 EST


Richard B. Johnson wrote:

On Mon, 6 Oct 2003, Hans-Georg Thien wrote:


Richard B. Johnson wrote:


On Mon, 6 Oct 2003, Hans-Georg Thien wrote:


[...]
I'm writing a kernel mode device driver (mouse).

In that device driver I need the timestamp of the last event for another
kernel mode device (keyboard).

I do not care if that timestamp is in jiffies or in gettimeofday()
format or whatever format does exist in the world. I am absolutely sure
I can convert it somehow to fit my needs.

But since it is a kernel mode driver it can not -AFAIK- use the signal()
syscall.

-Hans


Then it gets real simple. Just use jiffies, if you can stand the [...]

I fear that there is still some miss-understanding. Jiffies are totally
OK for me. I can use them without any conversion.

I'll try to formulate the problem with some other words:

I hope that there is is something like a "jiffie-counter" for the
keyboard driver, that stores the actual jiffies value whenever a
keyboard interrupt occurs.



Well the keyboard driver and the mouse driver are entirely
different devices.

yes, - I know

The keyboard has a built-int CPU that generates scan-codes for
every key-press/key-release. It also performs auto-repeat. The
mouse generates mouse data at each interrupting event. This data
represents direction and three key events. Wheel mouse have may
have additional data, I haven't looked at them. They are not
related in any way.

yes, - I know



I hope too, that there is a way to query that "jiffie-counter" from
another kernel driver, so that I can write something like


mymouse_module.c

...
void mouse_event(){

// get the current time in jiffies
int now=jiffies;

// get the jiffie value of the last kbd event
int last_kbd_event= ????; // ... but how to do that ...

if ((now - last_kbd_event) > delay) {
do_some_very_smart_things();
}
}
...



Now this pseudo-code shows a "last_kbd_event", not a mouse-
event as shown in:

yes, - I know =8))

It is because I want do some things with the mouse in relation to keyboard events.


[... a quite detailed explanation on mouse interrupts, mouse data ...]
yes, I know. But my question was: how can I get the timestamp of the last keyboard interrupt.

When your module is un-installed, it needs to restore the
previous (saved) value of that pointer.

yes, - I know

Whatever code you make that pointer point-to, must be
interrupt-safe. It can get the jiffie-count and put it
into a buffer, then return.

yes, - I know

Hey Richard, - what is so difficult to understand ?

Anyway, - have you read the email reply from Gabriel Paubert regarding this topic? Sounds very good for a 2.6.x kernel. It seems that I can use the /dev/input/event? device files. I have just modprobed the "evdev" module. It seems that I can get my timestamps by reading one of this files. Have to investigate still which one of them I have to use.

-Hans


-
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/