All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
To: Umair Ali <ali.umair@tut.fi>
Cc: "xenomai@xenomai.org" <xenomai@xenomai.org>
Subject: Re: [Xenomai] Loose determinism when reading pcap and sending as raw ethernet packets
Date: Thu, 10 Dec 2015 16:01:10 +0100	[thread overview]
Message-ID: <20151210150110.GA20328@hermes.click-hack.org> (raw)
In-Reply-To: <2396B4D2166B62479FBBE370D4A7C1F30A70DC03@mb2010-1.intra.tut.fi>

On Thu, Dec 10, 2015 at 01:20:47PM +0000, Umair Ali wrote:
> Hi Gilles,

Hi,

> 
> Thanks for understanding my problem.
> 
> >- for a program to run in primary mode only, pthread_setschedparam
> should be called with a priority higher than 1 for the SCHED_FIFO
> (or SCHED_RR) policy;
> 
> I have been doing the same already but i did not copy that part of code in the email.
> 
> >- when you call a function which returns a value, like send or
> nanosleep, you should always check the return value for errors;
> - if you want to send a message on average every 5us then
> nanosleep(5us) is not what you should be using, you should be using
> clock_nanosleep with an absolute date, or the easier but less
> portable timerfd;
> 
> I have used the clock_nanosleep with absolute time, but i could
> not find the absolute date. With clock_nanosleep i have found the
> same problem as described in the last email.

You compute the next absolute date. But the point is to add 5us to
the absolute date, instead of using now + 5us, so that the packets
are really sent every 5us on average. This should not solve the
problem you have, only ensure that the messages are sent every 5us
on average.

> I have looked the
> file timerfd.h. What i have understand is that by using timerfd i
> will create the dedicated timer with unique ID and then use the ID
> to get the time by using timerfd_gettime(). The time is added with
> amount of delay and passed to clock_nanosleep() function to
> achieve the required sleep time period. Am i doing it right with
> timerfd?

With timerfd, you would set up the timer with timerfd_settime() to
tick every 5us, then the read() system call to wait for the timer
next expiration.

> 
> >  what you observe is the jitter, you can measure the timer
> interrupt jitter with the "latency" test, but I bet that maybe the
> latency may be higher than 5us;
> - if you really really need to reduce the jitter, then using kernel
> timers instead of sleeping in a user-space thread is recommended,
> 
> Yes, you are right that what i have observed is the jitter. I have
> gone through the links which you have provided me in the last
> email. I am building my application using POSIX skin. In the
> links, they have used the rtdm_timer_start(). Now my question is
> that can i use the rtdm functions in the application compiling
> with posix skin, if yes then how. Do i have to change the skin for
> comilation in order to use the rtdm functions. Please refer me
> some guide for using the Xenomai Kernel timers with posix skin in
> order to avoid the jitter. Last thing do i need to made a kernel
> module in order to use the kernel timers. I am confused. Please
> guide me.

If you want to use kernel-space, you need to write a driver, running
in kernel spaces, and drivers use the RTDM API. The POSIX API is for
the application.

-- 
					    Gilles.
https://click-hack.org


  reply	other threads:[~2015-12-10 15:01 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-08 17:25 [Xenomai] Loose determinism when reading pcap and sending as raw ethernet packets Umair Ali
2015-12-08 20:13 ` Gilles Chanteperdrix
2015-12-10 13:20   ` Umair Ali
2015-12-10 15:01     ` Gilles Chanteperdrix [this message]
2015-12-10 17:25       ` Umair Ali
2015-12-11 14:59         ` Gilles Chanteperdrix

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=20151210150110.GA20328@hermes.click-hack.org \
    --to=gilles.chanteperdrix@xenomai.org \
    --cc=ali.umair@tut.fi \
    --cc=xenomai@xenomai.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.