void qemu_thread_create(QemuThread *thread, const char *name, void *(*start_routine)(void *), void *arg, int mode) { HANDLE hThread; struct QemuThreadData *data; data = g_malloc(sizeof *data); data->start_routine = start_routine; data->arg = arg; data->mode = mode; data->exited = false; notifier_list_init(&data->exit); if (data->mode != QEMU_THREAD_DETACHED) { InitializeCriticalSection(&data->cs); } hThread = (HANDLE) _beginthreadex(NULL, 0, win32_start_routine, data, 0, &thread->tid); if (!hThread) { error_exit(GetLastError(), __func__); } CloseHandle(hThread); thread->data = data; }
static QEMUClock *qemu_new_clock(int type) { QEMUClock *clock; clock = g_malloc0(sizeof(QEMUClock)); clock->type = type; clock->enabled = 1; clock->last = INT64_MIN; notifier_list_init(&clock->reset_notifiers); return clock; }
static QEMUClock *qemu_new_clock(int type) { QEMUClock *clock; clock = qemu_mallocz(sizeof(QEMUClock)); clock->type = type; clock->enabled = 1; notifier_list_init(&clock->reset_notifiers); /* required to detect & report backward jumps */ if (type == QEMU_CLOCK_HOST) { clock->last = get_clock_realtime(); } return clock; }