public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Ihar 'Philips' Filipau" <filia@softhome.net>
To: root@chaos.analogic.com
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [Q] jiffies overflow & timers.
Date: Mon, 17 Nov 2003 22:01:49 +0100	[thread overview]
Message-ID: <3FB9373D.6010300@softhome.net> (raw)
In-Reply-To: <Pine.LNX.4.53.0311171347540.24608@chaos>

Richard B. Johnson wrote:
> 
> Use jiffies as other modules use it:
> 
>         tim = jiffies + TIMEOUT_IN_HZ;
>         while(time_before(jiffies, tim))
>         {
>             if(what_im_waiting_for())
>                 break;
>             current->policy |= SCHED_YIELD;
>             schedule();
>         }
> //
> // Note that somebody could have taken the CPU for many seconds
> // causing a 'timeout', therefore, you need to add one more check
> // after loop-termination:
> //
>             if(what_im_waiting_for())
>                 good();
>             else
>                 timed_out();
> 
> Overflow is handled up to one complete wrap of jiffies + TIMEOUT. It's
> only the second wrap that will fail and if you are waiting several
> months for something to happen in your code, the code is broken.
> 

   Thanks! Looks & sounds sane.

   Will try to apply this to my case.
   what_im_waiting_for() == 'any expired timer'. I'm generating event to 
upper layer, if timer wasn't canceled before. This is network layer 
implementation - e.g. if line is Okay for some specified time, we need 
to generate event that line is 'up'. Or if we didn't get positive ack 
for some specified time resend payload. Something like this.

   And sure you example needs to be enhanced for the case when timer 
gets canceled before. Doable in anyway.

   You example implies I have to have something I can call schedule() on 
- currently I'm running without any user space part. To follow your 
advice I will need to create process a la kswapd/keventd?

P.S. BTW it looks like that tcp_timer.c does exactly what I do right now 
- this is 2.4.22 - hope 2.6 handles this correctly? I had enlightenment 
to take a look into tcp - tcp has to have timers - but found (as it 
seems) bug...

-- 
Ihar 'Philips' Filipau  / with best regards from Saarbruecken.
--                                                           _ _ _
  "... and for $64000 question, could you get yourself       |_|*|_|
    vaguely familiar with the notion of on-topic posting?"   |_|_|*|
                                 -- Al Viro @ LKML           |*|*|*|


  reply	other threads:[~2003-11-17 21:02 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-11-17 18:36 [Q] jiffies overflow & timers Ihar 'Philips' Filipau
2003-11-17 19:01 ` Richard B. Johnson
2003-11-17 21:01   ` Ihar 'Philips' Filipau [this message]
2003-11-17 21:28     ` Richard B. Johnson
2003-11-18  9:53       ` Ihar 'Philips' Filipau
2003-11-18 13:24         ` Richard B. Johnson
2003-11-18 14:11           ` Ihar 'Philips' Filipau

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=3FB9373D.6010300@softhome.net \
    --to=filia@softhome.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=root@chaos.analogic.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