static void trigger_signal(void *opaque, int n, int level) { SCLPEvent *event = opaque; event->event_pending = true; /* Trigger SCLP read operation */ sclp_service_interrupt(0); }
static void quiesce_powerdown_req(Notifier *n, void *opaque) { QuiesceNotifier *qn = container_of(n, QuiesceNotifier, notifier); SCLPEvent *event = qn->event; event->event_pending = true; /* trigger SCLP read operation */ sclp_service_interrupt(0); }
/* Send data from a char device over to the guest */ static void chr_read(void *opaque, const uint8_t *buf, int size) { SCLPConsole *scon = opaque; assert(scon); /* read data must fit into current buffer */ assert(size <= SIZE_BUFFER_VT220 - scon->iov_data_len); /* put byte-stream from character layer into buffer */ memcpy(&scon->iov[scon->iov_bs], buf, size); scon->iov_data_len += size; scon->iov_sclp_rest += size; scon->iov_bs += size; scon->event.event_pending = true; sclp_service_interrupt(0); }
static void chr_read(void *opaque, const uint8_t *buf, int size) { SCLPConsoleLM *scon = opaque; assert(size == 1); if (*buf == '\r' || *buf == '\n') { scon->event.event_pending = true; sclp_service_interrupt(0); return; } scon->buf[scon->length] = *buf; scon->length += 1; if (scon->echo) { qemu_chr_fe_write(scon->chr, buf, size); } }
static void chr_read(void *opaque, const uint8_t *buf, int size) { SCLPConsoleLM *scon = opaque; assert(size == 1); if (*buf == '\r' || *buf == '\n') { scon->event.event_pending = true; sclp_service_interrupt(0); return; } if (scon->length == SIZE_CONSOLE_BUFFER) { /* Eat the character, but still process CR and LF. */ return; } scon->buf[scon->length] = *buf; scon->length += 1; if (scon->echo) { qemu_chr_fe_write(scon->chr, buf, size); } }
static void trigger_ascii_console_data(void *env, int n, int level) { sclp_service_interrupt(0); }
static void trigger_console_data(void *opaque, int n, int level) { sclp_service_interrupt(0); }