public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* A problem with ktimer
@ 2005-11-17 15:39 Claudio Scordino
  2005-11-17 17:28 ` Steven Rostedt
  0 siblings, 1 reply; 4+ messages in thread
From: Claudio Scordino @ 2005-11-17 15:39 UTC (permalink / raw)
  To: linux-kernel; +Cc: kernelnewbies

Hi,

   I know that ktimer is not yet part of the main tree of the Linux kernel.

However, maybe someone can help me to understand why the following code in a 
module makes crash my x86_64.

Many thanks,

             Claudio



struct ktimer mytimer;

void myfunction()
{
        int i;
}


static int module_insert(void)
{
   ktime_t mytime = ktime_set(1,0);
   mytimer.function = myfunction;
   mytimer.data = NULL;
   ktimer_init(&mytimer);
   ktimer_start(&mytimer, &mytime, KTIMER_REL);
   //...
}

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: A problem with ktimer
  2005-11-17 15:39 A problem with ktimer Claudio Scordino
@ 2005-11-17 17:28 ` Steven Rostedt
  2006-01-16 14:45   ` ktimer not firing ? Claudio Scordino
  0 siblings, 1 reply; 4+ messages in thread
From: Steven Rostedt @ 2005-11-17 17:28 UTC (permalink / raw)
  To: Claudio Scordino; +Cc: kernelnewbies, linux-kernel

On Thu, 2005-11-17 at 16:39 +0100, Claudio Scordino wrote:
> Hi,
> 
>    I know that ktimer is not yet part of the main tree of the Linux kernel.
> 
> However, maybe someone can help me to understand why the following code in a 
> module makes crash my x86_64.
> 
> Many thanks,
> 
>              Claudio
> 
> 
> 
> struct ktimer mytimer;
> 
> void myfunction()
> {
>         int i;
> }
> 
> 
> static int module_insert(void)
> {
>    ktime_t mytime = ktime_set(1,0);
>    mytimer.function = myfunction;
>    mytimer.data = NULL;
>    ktimer_init(&mytimer);
>    ktimer_start(&mytimer, &mytime, KTIMER_REL);
>    //...
> }

You must do the ktimer_init first!

So the order must be:

   ktimer_init(&mytimer);
   mytimer.function = myfunction;
   mytimer.data = NULL;
   //...

Think of ktimer_init like memset(...) (since it actually does a memset)

You wouldn't do;

struct myvar;

myvar.my_field = 1;
memset(&myvar, 0, sizeof(myvar));

Right ;-)

-- Steve



^ permalink raw reply	[flat|nested] 4+ messages in thread

* ktimer not firing ?
  2005-11-17 17:28 ` Steven Rostedt
@ 2006-01-16 14:45   ` Claudio Scordino
  2006-01-17  8:04     ` Thomas Gleixner
  0 siblings, 1 reply; 4+ messages in thread
From: Claudio Scordino @ 2006-01-16 14:45 UTC (permalink / raw)
  To: linux-kernel; +Cc: Steven Rostedt, kernelnewbies, Thomas Gleixner, Ingo Molnar

Hi,

   I know that ktimer is not yet part of the main tree of the Linux
kernel...

I need an high precision timer in a kernel module for 2.6.14, so I chose to 
use ktimers.

My timer must be stopped and reprogrammed very frequently.

This is how I initialize the timer:

struct ktimer mytimer;
ktimer_init(&mytimer);
mytimer.function = myfunction;
mytimer.data = NULL;


This is how I stop the timer:

ktimer_cancel(&mytimer);


This is how I restart the timer:

ktime_t mytime = ktime_set(...,...);
ktimer_start(&mytimer, &mytime, KTIMER_REL)


However, the timer never fires. I checked the return value of the start and 
it's correct (0 = success). Any idea of why the timer does not fire ?

I tried also by directly using ktimer_restart instead of ktimer_cancel + 
ktimer_start, but the timer does not fire either.
The module has also another ktimer which works perfectly...


Many thanks for your help,

                     Claudio


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: ktimer not firing ?
  2006-01-16 14:45   ` ktimer not firing ? Claudio Scordino
@ 2006-01-17  8:04     ` Thomas Gleixner
  0 siblings, 0 replies; 4+ messages in thread
From: Thomas Gleixner @ 2006-01-17  8:04 UTC (permalink / raw)
  To: Claudio Scordino; +Cc: linux-kernel, Steven Rostedt, kernelnewbies, Ingo Molnar

On Mon, 2006-01-16 at 09:45 -0500, Claudio Scordino wrote:
> Hi,
> 
>    I know that ktimer is not yet part of the main tree of the Linux
> kernel...

And will never be. ktimers have been superseeded by hrtimers. The base
patch is merged into Linus tree and the high resolution patch can be
found here:

http://www.tglx.de/projects/hrtimers/2.6.15/

> However, the timer never fires. I checked the return value of the start and 
> it's correct (0 = success). Any idea of why the timer does not fire ?

Have you checked the expiry value after you called (re)start? It might
be far in the future.

	tglx



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2006-01-17  8:04 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-11-17 15:39 A problem with ktimer Claudio Scordino
2005-11-17 17:28 ` Steven Rostedt
2006-01-16 14:45   ` ktimer not firing ? Claudio Scordino
2006-01-17  8:04     ` Thomas Gleixner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox