All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Morris <john@zultron.com>
To: Carsten Emde <C.Emde@osadl.org>
Cc: Michael Haberler <mail17@mah.priv.at>, linux-rt-users@vger.kernel.org
Subject: Re: Detecting PREEMPT_RT
Date: Sun, 20 Jan 2013 12:39:32 -0600	[thread overview]
Message-ID: <50FC39E4.1090208@zultron.com> (raw)
In-Reply-To: <50FC2A33.5010001@osadl.org>



On 01/20/2013 11:32 AM, Carsten Emde wrote:
> Hi Michael,
> 
>>> Unfortunately, this wiki article is old and unmaintained. You're
probably right to be a bit suspicious when checking for the "-rt" suffix
of the kernel release (uname -r). But looking for the occurrence of
"PREEMPT RT" in the kernel version (uname -v) should work. An
application may use the system call uname() and check the version
element of the utsname structure.
>>
>> the utsname.version string match is fine, however:
>>
>>> In addition you may want to make sure the system has
>>> high-resolution
timers. If so, the timers in /proc/timer_list have ".resolution: 1
nsecs". An application may use the function check_timer() from
cyclictest for this purpose:
>>> static int check_timer(void)
>>> {
>>>   struct timespec ts;
>>>
>>>   if (clock_getres(CLOCK_MONOTONIC, &ts))
>>>     return 1;
>>>
>>>   return (ts.tv_sec != 0 || ts.tv_nsec != 1);
>>> }
>>
>> Just tried this on a generic kernel (2.6.32-45-generic #102-Ubuntu
SMP Wed Jan 2 21:53:06 UTC 2013 i686 GNU/Linux) and I get ts.tv_sec == 0
and ts.tv_nsec == 1, so it looks this cant be used to tell an RT_PREEMPT
from a vanilla kernel
> I meant boolean AND when I said "In addition".

Oh, I interpreted the timer check not as a PREEMPT_RT check, but a
separate check for timers, which we must confirm are available before
driving heavy machinery.

So, if utsname.version contains "PREEMPT RT", then load the preempt-rt
module.  Once the module is loaded, from an init() function, run sanity
checks, including the clock_getres check above.  Is that about right?

Thanks for the tips, Carsten!

	John

  reply	other threads:[~2013-01-20 18:39 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-20  0:13 Detecting PREEMPT_RT John Morris
2013-01-20  1:43 ` Carsten Emde
2013-01-20 15:52   ` Michael Haberler
2013-01-20 17:32     ` Carsten Emde
2013-01-20 18:39       ` John Morris [this message]
2013-01-20 20:18         ` Carsten Emde
2013-01-21 11:36           ` John Kacur
2013-01-21 12:14             ` Michael Haberler
2013-01-21 12:17               ` John Kacur
2013-01-22 10:47                 ` Michael Haberler

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=50FC39E4.1090208@zultron.com \
    --to=john@zultron.com \
    --cc=C.Emde@osadl.org \
    --cc=linux-rt-users@vger.kernel.org \
    --cc=mail17@mah.priv.at \
    /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.