void vnet_sendmsg(struct vnet_softc *sc, void *msg, size_t len) { struct ldc_conn *lc = &sc->sc_lc; int err; err = ldc_send_unreliable(lc, msg, len); if (err) printf("%s: ldc_send_unreliable: %d\n", __func__, err); }
void vdsp_sendmsg(struct vdsp_softc *sc, void *msg, size_t len, int dowait) { struct ldc_conn *lc = &sc->sc_lc; int err; do { err = ldc_send_unreliable(lc, msg, len); if (dowait && err == EWOULDBLOCK) { /* * Seems like the hypervisor doesn't actually * generate interrupts for transmit queues, so * we specify a timeout such that we don't * block forever. */ err = tsleep(lc->lc_txq, PWAIT, "vdsp", 1); } } while (dowait && err == EWOULDBLOCK); }