[Xenomai] powerpc 440 userspace latency test does nothing
Steven Seeger
steven.seeger at nasa.gov
Sat Dec 5 19:53:22 CET 2015
More info on this.
timer_gettime() on latency's timerfd returns 0 seconds and 1 nanosecond,
indicating the timer has not expired. No matter how much time I sleep before
this the result is the same.
The output of cat /proc/xenomai/timer/coreclk:
SCLINUX: / # cat /proc/xenomai/timer/coreclk
CPU SCHED/SHOT TIMEOUT INTERVAL NAME
0 2320/1334 1ms523us - [host-timer]
0 2/2 - - latency
0 1/0 - 100us timerfd_handler
The "latency" with 2/2 is a couple of sleep(1) I added for debugging purposes
during the beginning of the program.
I've modified latency to look like this:
133 err = clock_gettime(CLOCK_MONOTONIC, &expected);
134 if (err)
135 error(1, errno, "clock_gettime()");
136
137 printf("expected is: %Ld %ld\n", (long long int)expected.tv_sec,
expected.tv_nsec);
138 sleep(1);
139 err = clock_gettime(CLOCK_MONOTONIC, &expected);
140 printf("expected is: %Ld %ld\n", (long long int)expected.tv_sec,
expected.tv_nsec);
141
142 fault_threshold = CONFIG_XENO_DEFAULT_PERIOD;
143 nsamples = (long long)ONE_BILLION / period_ns;
144 /* start time: one millisecond from now. */
145 expected.tv_nsec += 1000000;
146 if (expected.tv_nsec > ONE_BILLION) {
147 expected.tv_nsec -= ONE_BILLION;
148 expected.tv_sec++;
149 }
150 timer_conf.it_value = expected;
151 timer_conf.it_interval.tv_sec = period_ns / ONE_BILLION;
152 timer_conf.it_interval.tv_nsec = period_ns % ONE_BILLION;
153
154 printf("expected is: %Ld %ld\n", (long long int)expected.tv_sec,
expected.tv_nsec);
155 err = timerfd_settime(tfd, TFD_TIMER_ABSTIME, &timer_conf, NULL);
156 if (err)
157 error(1, errno, "timerfd_settime()");
158
159 sleep(1);
160 err = timerfd_gettime(tfd, &timer_conf);
161 if(err) error(1, errno, "steven temp");
162 printf("timer got time %Ld %ld\n", (long long
int)timer_conf.it_value.tv_sec, timer_conf.it_value.tv_n sec);
Which yields the output:
expected is: 1582352598 771936946
expected is: 1582352599 772083521
expected is: 1582352599 773083521
timer got time 0 1
I've also confirmed that timerfd_read() reaches xnsynch_sleep_on
Seeing as how coreclk is also used for the host-timer and that works correctly
I am totally stumped. Anybody have any ideas? :)
Steven
More information about the Xenomai
mailing list