All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@domain.hid>
To: "\"Schlägl \\\"Manfred jun.\\\"\"" <manfred.schlaegl@domain.hid>
Cc: xenomai-help <xenomai@xenomai.org>
Subject: Re: [Xenomai-help] Adeos/Xenomai Arm Port
Date: Wed, 18 Oct 2006 12:35:54 +0200	[thread overview]
Message-ID: <4536038A.4000002@domain.hid> (raw)
In-Reply-To: <1161157955.5093.3.camel@domain.hid>

[-- Attachment #1: Type: text/plain, Size: 4785 bytes --]

Schlägl Manfred jun. wrote:
> On Tue, 2006-10-17 at 17:39 +0200, Schlägl Manfred jun. wrote:
> 
>> 5. latency
>>
>> For periodic user-mode task i need very high periods > 1000us.
>>
>>
>> Here are the latency-checks with printk's of the ioctls:
>>
>> -sh-3.00# ./run -- -t 1
>> *
>> *
>> * Type ^C to stop this application.
>> *
>> *
>> == Sampling period: 100 us
>> == Test mode: in-kernel periodic task
>> == All results in microseconds
>> [42949519.180000] rt_tmbench_ioctl_rt: request 1076364816 -> ret =
>> -ENOTTY(-25)
>> latency: failed to start in-kernel timer benchmark, code -25
>> [42949523.000000] rt_tmbench_ioctl_nrt: request -1071118831 -> ret =
>> -ENOTTY(-25)
>> ---|------------|------------|------------|--------|-------------------------
>> RTS|-1096532.504|       0.001|      93.252|   93340|
>> 00:00:03/00:00:03
>>
>> -sh-3.00# ./run -- -t 2
>> *
>> *
>> * Type ^C to stop this application.
>> *
>> *
>> == Sampling period: 100 us
>> == Test mode: in-kernel timer handler
>> == All results in microseconds
>> [42949529.090000] rt_tmbench_ioctl_rt: request 1076364816 -> ret =
>> -ENOTTY(-25)
>> latency: failed to start in-kernel timer benchmark, code -25
>> [42949534.680000] rt_tmbench_ioctl_nrt: request -1071118831 -> ret =
>> -ENOTTY(-25)
>> ---|------------|------------|------------|--------|-------------------------
>> RTS|-1093751.320|       0.001|      93.252|   93340|
>> 00:00:04/00:00:04
>>
>>
>> Userspace-codes differ from kernelspace-codes, I think...
> 
> 
> 
> Yes it does!!!
> 
> 
> 
> #define RTTST_RTIOC_TMBENCH_START \
>     _IOW(RTIOC_TYPE_TESTING, 0x10, struct rttst_tmbench_config) 
> 
> two different results in kernel-/user-space
> 
> sizeof(struct rttst_tmbench_config) 
> -> kernel 	32
> -> user		40
> 
> 
> typedef struct rttst_tmbench_config {
>     int                     mode;
>     uint64_t                period;
>     int                     priority;
>     int                     warmup_loops;
>     int                     histogram_size;
>     int                     histogram_bucketsize;
>     int                     freeze_max;
> } rttst_tmbench_config_t;
> 
> sizeof(struct rttst_tmbench_config_t)
> -> kernel	32	(uses packed-structure)
> -> user		40	(uses unpacked-structure)
> 
> sizeof(uint64_t)
> -> kernel	8
> -> user		8
> 
> sizeof(int)
> -> kernel	4
> -> user		4
> 
> 
> Difference has something to do with the internal structure of
> rttst_tmbench_config.
> 
> 
> Solution 1: Force userspace-app and kernel to use packed structure
> --------------
> typedef struct rttst_tmbench_config {
>     int                     mode;
>     uint64_t                period;
>     int                     priority;
>     int                     warmup_loops;
>     int                     histogram_size;
>     int                     histogram_bucketsize;
>     int                     freeze_max;
> } __attribute__((packed)) rttst_tmbench_config_t;
> 
> sizeof(struct rttst_tmbench_config_t)
> -> kernel	32	(uses packed-structure)
> -> user		32	(uses packed-structure)
> 
> Has to be done to all structures! (compiler-flag -fpack-struct)
> 
> Problems: 
>  * problems with libs (see
> http://gcc.gnu.org/ml/gcc-help/2005-01/msg00257.html)
>  * possibly problems with typedef ????
> 
> 
> Solution 2: Force userspace-app and kernel to use unpacked structure
> --------------
> typedef struct rttst_tmbench_config {
>     int                     mode;
>     uint64_t                period;
>     int                     priority;
>     int                     warmup_loops;
>     int                     histogram_size;
>     int                     histogram_bucketsize;
>     int                     freeze_max;
> } __attribute__((unpacked)) rttst_tmbench_config_t;
> 
> 
> Kernel ignores the attribute!
> 
> Theoretically:
> sizeof(struct rttst_tmbench_config_t)
> -> kernel	40	(uses unpacked-structure)
> -> user		40	(uses unpacked-structure)
> 
> Has to be done to all structures! 
> 
> 
> 
> 
> Solution 3:
> --------------
> change kernel-configuration to use unpacked structures by default.
> 

I vote for solution 4:

--- include/rtdm/rttesting.h    (revision 1731)
+++ include/rtdm/rttesting.h    (working copy)
@@ -85,8 +85,8 @@ typedef struct rttst_overall_bench_res {

 typedef struct rttst_tmbench_config {
     int                     mode;
-    nanosecs_rel_t          period;
     int                     priority;
+    nanosecs_rel_t          period;
     int                     warmup_loops;
     int                     histogram_size;
     int                     histogram_bucketsize;

Could you check if this helps?

Thanks,
Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 250 bytes --]

  reply	other threads:[~2006-10-18 10:35 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-17 15:39 [Xenomai-help] Adeos/Xenomai Arm Port Schlägl Manfred jun.
2006-10-18  7:52 ` Schlägl Manfred jun.
2006-10-18 10:35   ` Jan Kiszka [this message]
2006-10-18 12:24     ` Schlägl Manfred jun.
2006-10-18 12:33       ` Jan Kiszka
2006-10-18 12:48         ` Gilles Chanteperdrix
2006-10-21 14:56       ` Schlägl Manfred jun.
2006-10-21 16:44         ` Jan Kiszka
2006-10-25  8:03           ` Schlägl Manfred jun.
2006-10-18 10:25 ` Philippe Gerum
2006-10-18 12:05   ` Gilles Chanteperdrix
  -- strict thread matches above, loose matches on Subject: below --
2006-10-18 15:16 Schlägl Manfred jun.
2006-10-18 15:27 ` Jan Kiszka
2006-10-18 15:56   ` Schlägl Manfred jun.
2006-10-19  5:52     ` Jan Kiszka
2006-10-21 12:11   ` Schlägl Manfred jun.
2006-10-17  9:23 Schlägl Manfred jun.
2006-10-17  9:37 ` Jan Kiszka
2006-10-16 15:48 Schlägl Manfred jun.
2006-10-16 16:24 ` Jan Kiszka
2006-10-16 18:20 ` Gilles Chanteperdrix
2006-10-16 21:30 ` Philippe Gerum
2006-10-17  8:15   ` Gilles Chanteperdrix
2006-10-17  8:38     ` Gilles Chanteperdrix
2006-10-17  9:54       ` Philippe Gerum
2006-10-17 10:04     ` Philippe Gerum
2006-10-17 12:05       ` 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=4536038A.4000002@domain.hid \
    --to=jan.kiszka@domain.hid \
    --cc=manfred.schlaegl@domain.hid \
    --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.