1eeddd59fSLaurent Vivier #include "qemu/osdep.h" 2eeddd59fSLaurent Vivier #include "qemu/cutils.h" 3*907b5105SMarc-André Lureau #include "libqtest.h" 4eeddd59fSLaurent Vivier 5eeddd59fSLaurent Vivier #include "libqos/libqos-spapr.h" 6eeddd59fSLaurent Vivier #include "libqos/rtas.h" 7eeddd59fSLaurent Vivier 8fc8c745dSAlexey Kardashevskiy static void run_test_rtas_get_time_of_day(const char *machine) 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 16fc8c745dSAlexey Kardashevskiy qs = qtest_spapr_boot(machine); 17eeddd59fSLaurent Vivier 18eeddd59fSLaurent Vivier t1 = time(NULL); 19eb5937baSPaolo Bonzini ret = qrtas_get_time_of_day(qs->qts, &qs->alloc, &tm, &ns); 20eeddd59fSLaurent Vivier g_assert_cmpint(ret, ==, 0); 21eeddd59fSLaurent Vivier t2 = mktimegm(&tm); 22eeddd59fSLaurent Vivier g_assert(t2 - t1 < 5); /* 5 sec max to run the test */ 23eeddd59fSLaurent Vivier 2461ae5cf3SLaurent Vivier qtest_shutdown(qs); 25eeddd59fSLaurent Vivier } 26eeddd59fSLaurent Vivier 27fc8c745dSAlexey Kardashevskiy static void test_rtas_get_time_of_day(void) 28fc8c745dSAlexey Kardashevskiy { 29fc8c745dSAlexey Kardashevskiy run_test_rtas_get_time_of_day("-machine pseries"); 30fc8c745dSAlexey Kardashevskiy } 31fc8c745dSAlexey Kardashevskiy 32fc8c745dSAlexey Kardashevskiy static void test_rtas_get_time_of_day_vof(void) 33fc8c745dSAlexey Kardashevskiy { 34fc8c745dSAlexey Kardashevskiy run_test_rtas_get_time_of_day("-machine pseries,x-vof=on"); 35fc8c745dSAlexey Kardashevskiy } 36fc8c745dSAlexey Kardashevskiy 37eeddd59fSLaurent Vivier int main(int argc, char *argv[]) 38eeddd59fSLaurent Vivier { 39eeddd59fSLaurent Vivier const char *arch = qtest_get_arch(); 40eeddd59fSLaurent Vivier 41eeddd59fSLaurent Vivier g_test_init(&argc, &argv, NULL); 42eeddd59fSLaurent Vivier 43eeddd59fSLaurent Vivier if (strcmp(arch, "ppc64")) { 4464ed6f92SPaolo Bonzini g_printerr("RTAS requires qemu-system-ppc64\n"); 45eeddd59fSLaurent Vivier exit(EXIT_FAILURE); 46eeddd59fSLaurent Vivier } 47eeddd59fSLaurent Vivier qtest_add_func("rtas/get-time-of-day", test_rtas_get_time_of_day); 48fc8c745dSAlexey Kardashevskiy qtest_add_func("rtas/get-time-of-day-vof", test_rtas_get_time_of_day_vof); 49eeddd59fSLaurent Vivier 50eeddd59fSLaurent Vivier return g_test_run(); 51eeddd59fSLaurent Vivier } 52