struct consfront_dev *xencons_ring_init(void) { int err; struct consfront_dev *dev; if (!start_info.console.domU.evtchn) return 0; dev = bmk_memcalloc(1, sizeof(struct consfront_dev)); dev->nodename = "device/console"; dev->dom = 0; dev->backend = 0; dev->ring_ref = 0; dev->evtchn = start_info.console.domU.evtchn; dev->ring = (struct xencons_interface *) mfn_to_virt(start_info.console.domU.mfn); err = minios_bind_evtchn(dev->evtchn, console_handle_input, dev); if (err <= 0) { minios_printk("XEN console request chn bind failed %i\n", err); bmk_memfree(dev); return NULL; } minios_unmask_evtchn(dev->evtchn); /* In case we have in-flight data after save/restore... */ notify_daemon(dev); return dev; }
void rumpuser_cv_init(struct rumpuser_cv **cvp) { struct rumpuser_cv *cv; cv = bmk_memcalloc(1, sizeof(*cv), BMK_MEMWHO_WIREDBMK); TAILQ_INIT(&cv->waiters); *cvp = cv; }
void rumpuser_mutex_init(struct rumpuser_mtx **mtxp, int flags) { struct rumpuser_mtx *mtx; mtx = bmk_memcalloc(1, sizeof(*mtx), BMK_MEMWHO_WIREDBMK); mtx->flags = flags; TAILQ_INIT(&mtx->waiters); *mtxp = mtx; }
void rumpuser_rw_init(struct rumpuser_rw **rwp) { struct rumpuser_rw *rw; rw = bmk_memcalloc(1, sizeof(*rw), BMK_MEMWHO_WIREDBMK); TAILQ_INIT(&rw->rwait); TAILQ_INIT(&rw->wwait); *rwp = rw; }