static int talk_to_otherend(struct xenbus_device *dev) { struct xenbus_driver *drv = to_xenbus_driver(dev->dev.driver); free_otherend_watch(dev); free_otherend_details(dev); return drv->read_otherend_details(dev); }
int xenbus_dev_remove(struct device *_dev) { struct xenbus_device *dev = to_xenbus_device(_dev); struct xenbus_driver *drv = to_xenbus_driver(_dev->driver); DPRINTK("%s", dev->nodename); free_otherend_watch(dev); free_otherend_details(dev); if (drv->remove) drv->remove(dev); xenbus_switch_state(dev, XenbusStateClosed); return 0; }
int talk_to_otherend(struct xenbus_device *dev) { int err; free_otherend_watch(dev); free_otherend_details(dev); if (dev->frontend) err = read_backend_details(dev); else err = read_frontend_details(dev); if (err) return (err); dev->otherend_watch.dev = dev; return (xenbus_watch_path2(dev, dev->otherend, "state", &dev->otherend_watch, otherend_changed)); }