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
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Xenomai-help mailing list [email protected] https://mail.gna.org/listinfo/xenomai-help
