Dear Joel, I forgot this basic configuration.
Thank you very much. Best Regards, Thomas Kim 2017. 8. 14. 21:11에 "Joel Sherrill" <j...@rtems.org>님이 작성: > 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. > > By using main() as the entry point and not specifying any configuration > info you are getting the entire default settings. > > On Aug 14, 2017 12:19 AM, "Thomas Kim" <thomas73....@gmail.com> wrote: > >> Dear Sir, >> >> I am testing pthread_cond_timedwait() on realview-pbx-a9 using QEMU. >> >> My testing code is below; >> >> #include <pthread.h> >> #include <time.h> >> static void thread_sleep(struct timespec *ti) >> { >> pthread_mutex_t mtx; >> pthread_cond_t cnd; >> pthread_mutex_init(&mtx, 0); >> pthread_cond_init(&cnd, 0); >> pthread_mutex_lock(&mtx); >> pthread_cond_timedwait(&cnd, &mtx, ti); >> pthread_mutex_unlock(&mtx); >> pthread_cond_destroy(&cnd); >> pthread_mutex_destroy(&mtx); >> } >> void own_msleep(unsigned long msecs) >> { >> struct timeval tv; >> gettimeofday(&tv, 0); >> struct timespec ti; >> ti.tv_nsec = (tv.tv_usec + (msecs % 1000) * 1000) * 1000; >> ti.tv_sec = tv.tv_sec + (msecs / 1000) + (ti.tv_nsec / 1000000000); >> ti.tv_nsec %= 1000000000; >> thread_sleep(&ti); >> } >> #define TEST_1 0 >> #define TEST_2 0 >> #define TEST_3 0 >> #define TEST_4 1 >> int main(int argc, char *argv[]) >> { >> int count = 0; >> >> while (1) >> { >> #if TEST_1 // Normal operation. total time for count 100 = almost 1 >> second. >> own_msleep(10); >> count++; >> if (count%100 == 0) printf("count=%d\n", count); >> #endif >> #if TEST_2 // Abnormal operation. total time for count 200 = about 2 >> seconds. >> own_msleep(5); >> count++; >> if (count%200 == 0) printf("count=%d\n", count); >> #endif >> #if TEST_3 // Abnormal operation. total time for count 500 = about 5 >> seconds. >> own_msleep(2); >> count++; >> if (count%500 == 0) printf("count=%d\n", count); >> #endif >> #if TEST_4 // Abnormal operation. total time for count 1000 = about 10 >> seconds. >> own_msleep(1); >> count++; >> if (count%1000 == 0) printf("count=%d\n", count); >> #endif >> } >> return 0; >> } >> >> As you see in my testing code, I called own_msleep() function using >> pthread mutex, condition variable API. >> >> As my result, when I use own_msleep(10), there is not any problem for >> this. >> But, when I decrease time internal from 10ms to (5 or 2 or 1)ms, msleep() >> have addtional delay. >> >> As I know from BSP code for realview-pbx-a9, OS timer interval is 1ms. >> >> Is it correct behaivor ? >> Is there any limitation for using short time interval ? >> >> Please advise me. >> >> Best Regards, >> Thomas Kim. >> >> >> _______________________________________________ >> users mailing list >> users@rtems.org >> http://lists.rtems.org/mailman/listinfo/users >> >
_______________________________________________ users mailing list users@rtems.org http://lists.rtems.org/mailman/listinfo/users