1eeddd59fSLaurent Vivier #include "qemu/osdep.h" 2eeddd59fSLaurent Vivier #include "qemu/cutils.h" 3eeddd59fSLaurent Vivier #include "libqtest.h" 4eeddd59fSLaurent Vivier 5eeddd59fSLaurent Vivier #include "libqos/libqos-spapr.h" 6eeddd59fSLaurent Vivier #include "libqos/rtas.h" 7eeddd59fSLaurent Vivier 8eeddd59fSLaurent Vivier static void test_rtas_get_time_of_day(void) 9eeddd59fSLaurent Vivier { 10eeddd59fSLaurent Vivier QOSState *qs; 11eeddd59fSLaurent Vivier struct tm tm; 12eeddd59fSLaurent Vivier uint32_t ns; 13eeddd59fSLaurent Vivier uint64_t ret; 14eeddd59fSLaurent Vivier time_t t1, t2; 15eeddd59fSLaurent Vivier 16eeddd59fSLaurent Vivier qs = qtest_spapr_boot("-machine pseries"); 173d95fb97SEric Blake global_qtest = qs->qts; 18eeddd59fSLaurent Vivier 19eeddd59fSLaurent Vivier t1 = time(NULL); 20*eb5937baSPaolo Bonzini ret = qrtas_get_time_of_day(qs->qts, &qs->alloc, &tm, &ns); 21eeddd59fSLaurent Vivier g_assert_cmpint(ret, ==, 0); 22eeddd59fSLaurent Vivier t2 = mktimegm(&tm); 23eeddd59fSLaurent Vivier g_assert(t2 - t1 < 5); /* 5 sec max to run the test */ 24eeddd59fSLaurent Vivier 2561ae5cf3SLaurent Vivier qtest_shutdown(qs); 26eeddd59fSLaurent Vivier } 27eeddd59fSLaurent Vivier 28eeddd59fSLaurent Vivier int main(int argc, char *argv[]) 29eeddd59fSLaurent Vivier { 30eeddd59fSLaurent Vivier const char *arch = qtest_get_arch(); 31eeddd59fSLaurent Vivier 32eeddd59fSLaurent Vivier g_test_init(&argc, &argv, NULL); 33eeddd59fSLaurent Vivier 34eeddd59fSLaurent Vivier if (strcmp(arch, "ppc64")) { 35eeddd59fSLaurent Vivier g_printerr("RTAS requires ppc64-softmmu/qemu-system-ppc64\n"); 36eeddd59fSLaurent Vivier exit(EXIT_FAILURE); 37eeddd59fSLaurent Vivier } 38eeddd59fSLaurent Vivier qtest_add_func("rtas/get-time-of-day", test_rtas_get_time_of_day); 39eeddd59fSLaurent Vivier 40eeddd59fSLaurent Vivier return g_test_run(); 41eeddd59fSLaurent Vivier } 42