<div dir="auto">Dear Joel,<div dir="auto"><br></div><div dir="auto">I forgot this basic configuration.</div><div dir="auto"><br></div><div dir="auto">Thank you very much.</div><div dir="auto"><br></div><div dir="auto">Best Regards,</div><div dir="auto">Thomas Kim</div></div><div class="gmail_extra"><br><div class="gmail_quote">2017. 8. 14. 21:11에 "Joel Sherrill" <<a href="mailto:joel@rtems.org">joel@rtems.org</a>>님이 작성:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><span style="font-family:sans-serif;font-size:13.696px">You have to configure the clock tick length. By default it is 10 milliseconds if I remember correctly. All timeouts are done in the clock tick. </span><div dir="auto" style="font-family:sans-serif;font-size:13.696px"><br></div><div dir="auto" style="font-family:sans-serif;font-size:13.696px">By using main() as the entry point and not specifying any configuration info you are getting the entire default settings.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Aug 14, 2017 12:19 AM, "Thomas Kim" <<a href="mailto:thomas73.kim@gmail.com" target="_blank">thomas73.kim@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Dear Sir,</div><div><br></div><div>I am testing pthread_cond_timedwait() on realview-pbx-a9 using QEMU.</div><div><br></div><div>My testing code is below;</div><div><br></div><div>#include <pthread.h><br>#include <time.h></div><div>static void thread_sleep(struct timespec *ti)<br>{<br>    pthread_mutex_t mtx;<br>    pthread_cond_t cnd;</div><div>    pthread_mutex_init(&mtx, 0);<br>    pthread_cond_init(&cnd, 0);</div><div>    pthread_mutex_lock(&mtx);<br>    pthread_cond_timedwait(&cnd, &mtx, ti);<br>    pthread_mutex_unlock(&mtx);</div><div>    pthread_cond_destroy(&cnd);<br>    pthread_mutex_destroy(&mtx);<br>}</div><div>void own_msleep(unsigned long msecs)<br>{<br>    struct timeval tv;<br>    gettimeofday(&tv, 0);<br>    struct timespec ti;</div><div>    ti.tv_nsec = (tv.tv_usec + (msecs % 1000) * 1000) * 1000;<br>    ti.tv_sec = tv.tv_sec + (msecs / 1000) + (ti.tv_nsec / 1000000000);<br>    ti.tv_nsec %= 1000000000;<br>    thread_sleep(&ti);<br>}</div><div>#define TEST_1 0<br>#define TEST_2 0<br>#define TEST_3 0<br>#define TEST_4 1</div><div>int main(int argc, char *argv[]) <br>{ <br> int count = 0;<br> <br> while (1)<br> {<br>#if TEST_1 // Normal operation. total time for count 100 = almost 1 second.<br>  own_msleep(10);<br>  count++;<br>  if (count%100 == 0) printf("count=%d\n", count);<br>#endif</div><div>#if TEST_2 // Abnormal operation. total time for count 200 = about 2 seconds.<br>  own_msleep(5);<br>  count++;<br>  if (count%200 == 0) printf("count=%d\n", count);<br>#endif</div><div>#if TEST_3 // Abnormal operation. total time for count 500 = about 5 seconds.<br>  own_msleep(2);<br>  count++;<br>  if (count%500 == 0) printf("count=%d\n", count);<br>#endif</div><div>#if TEST_4 // Abnormal operation. total time for count 1000 = about 10 seconds.<br>  own_msleep(1);<br>  count++;<br>  if (count%1000 == 0) printf("count=%d\n", count);<br>#endif<br> }</div><div> return 0; <br>} </div><div><br></div><div>As you see in my testing code, I called own_msleep() function using pthread mutex, condition variable API.</div><div><br></div><div>As my result, when I use own_msleep(10), there is not any problem for this.</div><div>But, when I decrease time internal from 10ms to (5 or 2 or 1)ms, msleep() have addtional delay.</div><div><br></div><div>As I know from BSP code for realview-pbx-a9, OS timer interval is 1ms.</div><div><br></div><div>Is it correct behaivor ?</div><div>Is there any limitation for using short time interval ?</div><div><br></div><div>Please advise me.</div><div><br></div><div>Best Regards,</div><div>Thomas Kim.</div><div><br></div></div>
<br>______________________________<wbr>_________________<br>
users mailing list<br>
<a href="mailto:users@rtems.org" target="_blank">users@rtems.org</a><br>
<a href="http://lists.rtems.org/mailman/listinfo/users" rel="noreferrer" target="_blank">http://lists.rtems.org/mailman<wbr>/listinfo/users</a><br></blockquote></div></div>
</blockquote></div></div>