static int tap_win32_init(VLANState *vlan, const char *model, const char *name, const char *ifname) { VLANClientState *nc; TAPState *s; tap_win32_overlapped_t *handle; if (tap_win32_open(&handle, ifname) < 0) { printf("tap: Could not open '%s'\n", ifname); return -1; } nc = qemu_new_net_client(&net_tap_win32_info, vlan, NULL, model, name); s = DO_UPCAST(TAPState, nc, nc); snprintf(s->nc.info_str, sizeof(s->nc.info_str), "tap: ifname=%s", ifname); s->handle = handle; qemu_add_wait_object(s->handle->tap_semaphore, tap_win32_send, s); return 0; }
static int winwave_ctl_in (HWVoiceIn *hw, int cmd, ...) { MMRESULT mr; WaveVoiceIn *wave = (WaveVoiceIn *) hw; switch (cmd) { case VOICE_ENABLE: { va_list ap; int poll_mode; va_start (ap, cmd); poll_mode = va_arg (ap, int); va_end (ap); if (poll_mode && !wave->event) { wave->event = CreateEvent (NULL, TRUE, TRUE, NULL); if (!wave->event) { dolog ("ADC CreateEvent: %lx, poll mode will be disabled\n", GetLastError ()); } } if (wave->event) { int ret; ret = qemu_add_wait_object (wave->event, winwave_poll, wave); hw->poll_mode = (ret == 0); } else { hw->poll_mode = 0; } if (wave->paused) { mr = waveInStart (wave->hwi); if (mr != MMSYSERR_NOERROR) { winwave_logerr (mr, "waveInStart"); } wave->paused = 0; } } return 0; case VOICE_DISABLE: if (!wave->paused) { mr = waveInStop (wave->hwi); if (mr != MMSYSERR_NOERROR) { winwave_logerr (mr, "waveInStop"); } else { wave->paused = 1; } } if (wave->event) { qemu_del_wait_object (wave->event, winwave_poll, wave); } return 0; } return 0; }
static int qemu_event_init(void) { qemu_event_handle = CreateEvent(NULL, FALSE, FALSE, NULL); if (!qemu_event_handle) { perror("Failed CreateEvent"); return -1; } qemu_add_wait_object(qemu_event_handle, dummy_event_handler, NULL); return 0; }
static int qemu_event_init(void) { qemu_event_handle = CreateEvent(NULL, FALSE, FALSE, NULL); if (!qemu_event_handle) { fprintf(stderr, "Failed CreateEvent: %ld\n", GetLastError()); return -1; } qemu_add_wait_object(qemu_event_handle, dummy_event_handler, NULL); return 0; }
int event_notifier_set_handler(EventNotifier *e, EventNotifierHandler *handler) { if (handler) { return qemu_add_wait_object(e->event, (IOHandler *)handler, e); } else { qemu_del_wait_object(e->event, (IOHandler *)handler, e); return 0; } }
int tap_win32_init(VLANState *vlan, const char *ifname) { TAPState *s; s = qemu_mallocz(sizeof(TAPState)); if (!s) return -1; if (tap_win32_open(&s->handle, ifname) < 0) { printf("tap: Could not open '%s'\n", ifname); return -1; } s->vc = qemu_new_vlan_client(vlan, tap_receive, NULL, s); snprintf(s->vc->info_str, sizeof(s->vc->info_str), "tap: ifname=%s", ifname); qemu_add_wait_object(s->handle->tap_semaphore, tap_win32_send, s); return 0; }