예제 #1
0
파일: xenbus_probe.c 프로젝트: 020gzh/linux
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);
}
예제 #2
0
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;
}
예제 #3
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));
}