Re: [Xenomai-core] RTDM timeout value

2007-08-30 Thread Philippe Gerum
On Wed, 2007-08-29 at 17:28 +0200, Jan Kiszka wrote:
 Philippe Gerum wrote:
  On Wed, 2007-08-29 at 16:32 +0200, Jan Kiszka wrote:
  Markus Osterried (BA/EDD) wrote:
  Hi,
 
  it seems that in the RTDM API, all the timeout functions which use
  nanosecs_rel_t have a strange behaviour.
  The timeout in nanoseconds is converted to ticks and the number of ticks
  is rounded down. So when we want to wait e.g. 50 nanoseconds and the
  timertick is 1 ms, xnpod_ns2ticks() rounds down to 0. But 0 is the
  special value RTDM_TIMEOUT_INFINITE, so we wait forever. I use Xenomai
  2.3.1, but I think it's basically the same in trunk.
  It should even impact other skins as well when in tick-based timing
  mode. I would bet more users of xnpod_ns2ticks() may have overseen this
  rounding issue - like RTDM did.
 
  
  Other skins may only mean POSIX and native, since the other ones only
  deal with ticks.
 
 Ah, yeah, of course.
 
 POSIX is safe because it does well-defined rounding on its own. Native
 itself has no problem, just the user may get informed about the rounding
 behaviour of rt_timer_ns2ticks. Otherwise, things like rt_sem_p(sem,
 rt_timer_ns2ticks(some_nanos)) may unexpectedly behave like RTDM does now.
 
  
  Wouldn't it be better to round up the ticks instead of round it down?
  Hmm, probably. Mind to work out a patch for xnpod_ticks2ns()?
 
  What do others think about this issue? Can/should we change the rounding
  behaviour at nucleus level?
 
  
  Clearly not. You don't change the core rounding policy for fixing
  shortcomings in the higher levels, especially to fix invalid application
  requests. I do want to be able to round down at nucleus level, which I
  would not be able to do anymore with a rounding up policy at core level.
  This change belongs to the skin which wants this behaviour.
 
 Agreed, we primarily need to fix RTDM here.
 
 But what about introducing generic xnpod/xntbase_ns2ticks_floor/ceil()
 for this? Would avoid more re-inventions of this common service.
 

Agreed.

 Jan
 
-- 
Philippe.



___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] RTDM timeout value

2007-08-29 Thread Markus Osterried (BA/EDD)
Hi,

it seems that in the RTDM API, all the timeout functions which use
nanosecs_rel_t have a strange behaviour.
The timeout in nanoseconds is converted to ticks and the number of ticks
is rounded down. So when we want to wait e.g. 50 nanoseconds and the
timertick is 1 ms, xnpod_ns2ticks() rounds down to 0. But 0 is the
special value RTDM_TIMEOUT_INFINITE, so we wait forever. I use Xenomai
2.3.1, but I think it's basically the same in trunk.
Wouldn't it be better to round up the ticks instead of round it down?


Thanks
Markus

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] RTDM timeout value

2007-08-29 Thread Jan Kiszka
Markus Osterried (BA/EDD) wrote:
 Hi,
 
 it seems that in the RTDM API, all the timeout functions which use
 nanosecs_rel_t have a strange behaviour.
 The timeout in nanoseconds is converted to ticks and the number of ticks
 is rounded down. So when we want to wait e.g. 50 nanoseconds and the
 timertick is 1 ms, xnpod_ns2ticks() rounds down to 0. But 0 is the
 special value RTDM_TIMEOUT_INFINITE, so we wait forever. I use Xenomai
 2.3.1, but I think it's basically the same in trunk.

It should even impact other skins as well when in tick-based timing
mode. I would bet more users of xnpod_ns2ticks() may have overseen this
rounding issue - like RTDM did.

 Wouldn't it be better to round up the ticks instead of round it down?

Hmm, probably. Mind to work out a patch for xnpod_ticks2ns()?

What do others think about this issue? Can/should we change the rounding
behaviour at nucleus level?

Thanks for reporting,
Jan



signature.asc
Description: OpenPGP digital signature
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] RTDM timeout value

2007-08-29 Thread Gilles Chanteperdrix
On 8/29/07, Philippe Gerum [EMAIL PROTECTED] wrote:
 On Wed, 2007-08-29 at 16:32 +0200, Jan Kiszka wrote:
  Markus Osterried (BA/EDD) wrote:
   Hi,
  
   it seems that in the RTDM API, all the timeout functions which use
   nanosecs_rel_t have a strange behaviour.
   The timeout in nanoseconds is converted to ticks and the number of ticks
   is rounded down. So when we want to wait e.g. 50 nanoseconds and the
   timertick is 1 ms, xnpod_ns2ticks() rounds down to 0. But 0 is the
   special value RTDM_TIMEOUT_INFINITE, so we wait forever. I use Xenomai
   2.3.1, but I think it's basically the same in trunk.
 
  It should even impact other skins as well when in tick-based timing
  mode. I would bet more users of xnpod_ns2ticks() may have overseen this
  rounding issue - like RTDM did.
 

 Other skins may only mean POSIX and native, since the other ones only
 deal with ticks.

AFAICT, the posix skin deals with this, most timeouts use
ts_2ticks_ceil(timeout)+1
which round the timeout (expressed as a struct timespec) to the next
tick, and add an additional tick to be sure to sleep at least the
specified duration, as required by the posix spec.

Of course, there may be places in the posix skin where I forgot about
this issue.
-- 
   Gilles Chanteperdrix

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] RTDM timeout value

2007-08-29 Thread Philippe Gerum
On Wed, 2007-08-29 at 16:32 +0200, Jan Kiszka wrote:
 Markus Osterried (BA/EDD) wrote:
  Hi,
  
  it seems that in the RTDM API, all the timeout functions which use
  nanosecs_rel_t have a strange behaviour.
  The timeout in nanoseconds is converted to ticks and the number of ticks
  is rounded down. So when we want to wait e.g. 50 nanoseconds and the
  timertick is 1 ms, xnpod_ns2ticks() rounds down to 0. But 0 is the
  special value RTDM_TIMEOUT_INFINITE, so we wait forever. I use Xenomai
  2.3.1, but I think it's basically the same in trunk.
 
 It should even impact other skins as well when in tick-based timing
 mode. I would bet more users of xnpod_ns2ticks() may have overseen this
 rounding issue - like RTDM did.
 

Other skins may only mean POSIX and native, since the other ones only
deal with ticks.

  Wouldn't it be better to round up the ticks instead of round it down?
 
 Hmm, probably. Mind to work out a patch for xnpod_ticks2ns()?
 
 What do others think about this issue? Can/should we change the rounding
 behaviour at nucleus level?
 

Clearly not. You don't change the core rounding policy for fixing
shortcomings in the higher levels, especially to fix invalid application
requests. I do want to be able to round down at nucleus level, which I
would not be able to do anymore with a rounding up policy at core level.
This change belongs to the skin which wants this behaviour.

 Thanks for reporting,
 Jan
 
 ___
 Xenomai-core mailing list
 Xenomai-core@gna.org
 https://mail.gna.org/listinfo/xenomai-core
-- 
Philippe.



___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] RTDM timeout value

2007-08-29 Thread Jan Kiszka
Philippe Gerum wrote:
 On Wed, 2007-08-29 at 16:32 +0200, Jan Kiszka wrote:
 Markus Osterried (BA/EDD) wrote:
 Hi,

 it seems that in the RTDM API, all the timeout functions which use
 nanosecs_rel_t have a strange behaviour.
 The timeout in nanoseconds is converted to ticks and the number of ticks
 is rounded down. So when we want to wait e.g. 50 nanoseconds and the
 timertick is 1 ms, xnpod_ns2ticks() rounds down to 0. But 0 is the
 special value RTDM_TIMEOUT_INFINITE, so we wait forever. I use Xenomai
 2.3.1, but I think it's basically the same in trunk.
 It should even impact other skins as well when in tick-based timing
 mode. I would bet more users of xnpod_ns2ticks() may have overseen this
 rounding issue - like RTDM did.

 
 Other skins may only mean POSIX and native, since the other ones only
 deal with ticks.

Ah, yeah, of course.

POSIX is safe because it does well-defined rounding on its own. Native
itself has no problem, just the user may get informed about the rounding
behaviour of rt_timer_ns2ticks. Otherwise, things like rt_sem_p(sem,
rt_timer_ns2ticks(some_nanos)) may unexpectedly behave like RTDM does now.

 
 Wouldn't it be better to round up the ticks instead of round it down?
 Hmm, probably. Mind to work out a patch for xnpod_ticks2ns()?

 What do others think about this issue? Can/should we change the rounding
 behaviour at nucleus level?

 
 Clearly not. You don't change the core rounding policy for fixing
 shortcomings in the higher levels, especially to fix invalid application
 requests. I do want to be able to round down at nucleus level, which I
 would not be able to do anymore with a rounding up policy at core level.
 This change belongs to the skin which wants this behaviour.

Agreed, we primarily need to fix RTDM here.

But what about introducing generic xnpod/xntbase_ns2ticks_floor/ceil()
for this? Would avoid more re-inventions of this common service.

Jan



signature.asc
Description: OpenPGP digital signature
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core