Schlägl Manfred jun. wrote:
> On Wed, 2006-10-18 at 14:24 +0200, Schlägl Manfred jun. wrote:
>> On Wed, 2006-10-18 at 12:35 +0200, Jan Kiszka wrote:
>>
>>> 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
>>>
>>
>> Thanks! It works. ioctls are working
>>
>> But there is another Problem: I've inserted debug messages
>>
>> // USER-PROCESS
>> -sh-3.00# ./run -- -t 1 -p 10000 -T 5
>> *
>> *
>> * Type ^C to stop this application.
>> *
>> *
>> Using /lib/modules/2.6.15.7/kernel/drivers/xenomai/testing/xeno_timerbench.ko
>> == Sampling period: 10000 us
>> == Test mode: in-kernel periodic task
>> == All results in microseconds
>> LATENCY: display send RTTST_RTIOC_TMBENCH_START:
>> mode    0
>> periode 1
>> pri     99
>> warmup  1
>> hist_s  0
>> hist_bs 1000
>> fmax    0
>> DEBUG: rt_dev_ioctl: request: 1075840528
>> warming up...
>> DEBUG: rt_dev_ioctl: request: -1070594560
>> RTT|  00:00:01  (in-kernel periodic task, 10000 us period, priority 99)
>> RTH|-----lat min|-----lat avg|-----lat max|-overrun|----lat best|---lat
>> worst
>> RTD|      29.369|      32.341|      35.879|       0|      29.369|
>> 35.879
>> DEBUG: rt_dev_ioctl: request: -1070594560
>> RTD|      22.135|      32.381|      36.241|       0|      22.135|
>> 36.241
>> DEBUG: rt_dev_ioctl: request: -1070594560
>> RTD|      21.050|      32.378|      37.326|       0|      21.050|
>> 37.326
>> DEBUG: rt_dev_ioctl: request: -1070594560
>> DEBUG: rt_dev_ioctl: request: -1071118831
>> ---|------------|------------|------------|--------|-------------------------
>> RTS|-1095770.696|       0.001|      93.660|   93748|
>> 00:00:05/00:00:05
>> -sh-3.00#    
>>
>> // KERNEL-OUTPUT
>>
>> [42949410.980000] KERNEL: rt_tmbench_ioctl_nrt got request 1075840528
>> [42949410.990000] KERNEL: rt_tmbench_ioctl_nrt got
>> RTTST_RTIOC_TMBENCH_START:
>> [42949411.020000] mode    0
>> [42949411.020000] periode 10000000
>> [42949411.030000] pri     99
>> [42949411.040000] warmup  1
>> [42949411.050000] hist_s  0
>> [42949411.060000] hist_bs 1000
>> [42949411.070000] fmax    0
>> [42949411.080000] KERNEL: rt_tmbench_ioctl_nrt got request -1070594560
>> [42949411.090000] rt_tmbench_ioctl_nrt: request
>> -1070594560(RTTST_RTIOC_INTERM_BENCH_RES) -> ret = -ENOSYS(-38)
>> [42949411.120000] rt_tmbench_ioctl_rt -1070594560
>> [42949413.070000] KERNEL: rt_tmbench_ioctl_nrt got request -1070594560
>> [42949413.090000] rt_tmbench_ioctl_nrt: request
>> -1070594560(RTTST_RTIOC_INTERM_BENCH_RES) -> ret = -ENOSYS(-38)
>> [42949413.120000] rt_tmbench_ioctl_rt -1070594560
>> [42949414.070000] KERNEL: rt_tmbench_ioctl_nrt got request -1070594560
>> [42949414.090000] rt_tmbench_ioctl_nrt: request
>> -1070594560(RTTST_RTIOC_INTERM_BENCH_RES) -> ret = -ENOSYS(-38)
>> [42949414.120000] rt_tmbench_ioctl_rt -1070594560
>> [42949415.070000] KERNEL: rt_tmbench_ioctl_nrt got request -1070594560
>> [42949415.090000] rt_tmbench_ioctl_nrt: request
>> -1070594560(RTTST_RTIOC_INTERM_BENCH_RES) -> ret = -ENOSYS(-38)
>> [42949415.120000] rt_tmbench_ioctl_rt -1070594560
>> [42949415.290000] KERNEL: rt_tmbench_ioctl_nrt got request -1071118831
>> [42949415.310000] rt_tmbench_ioctl_nrt: request -1071118831 -> ret =
>> -ENOTTY(-25)
>>
>>
>>
>> The RTTST_RTIOC_INTERM_BENCH_RES request is received by
>> rt_tmbench_ioctl_nrt and rt_tmbench_ioctl_rt. Is this normal on arm?
>> (on my x86 this happens only at the beginning of a test-run)
>>
>>
>> Thank you
>>      Manfred Schlaegl
>>
>>
>> _______________________________________________
>> Xenomai-help mailing list
>> [email protected]
>> https://mail.gna.org/listinfo/xenomai-help
> 
> 
> Like above i had a problem using RTTST_RTIOC_TMBENCH_STOP too.
> 
> 
> typedef struct rttst_bench_res {
>     long long               avg;
>     long                    min;
>     long                    max;
>     long                    overruns;
>     long                    test_loops;
> } rttst_bench_res_t;
> 
> typedef struct rttst_overall_bench_res {
>     struct rttst_bench_res  result;
>     long                    *histogram_avg;
>     long                    *histogram_min;
>     long                    *histogram_max;
> } rttst_overall_bench_res_t;
> 
> 
> 
> sizeof(struct rttst_bench_res):
> Kernel        24
> User  24
> 
> sizeof(struct rttst_overall_bench_res):
> Kernel        36
> User  40
> 
> 
> I used this Patch:
> 
> typedef struct rttst_overall_bench_res {
>     struct rttst_bench_res  result;
> +   char                    __fill;   /* fill byte */
>     long                    *histogram_avg;
>     long                    *histogram_min;
>     long                    *histogram_max;
> } rttst_overall_bench_res_t;
> 
> sizeof(struct rttst_overall_bench_res):
> Kernel        40
> User  40
> 

Damn it. What alignment of the compiler is behind this? Fill up to
multiples of X bytes, ok. But how to find out what X is on some
platform? Anyone any hint on this?

Thanks for tracking down.

Jan

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to