Daemon News Ezine BSD News BSD Mall BSD Support Forum BSD Advocacy BSD Updates

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

PERFORCE change 90448 for review



http://perforce.freebsd.org/chv.cgi?CH=90448

Change 90448 by scottl@scottl-junior on 2006/01/27 03:53:46

	Add the foundation for the xenbus device.

Affected files ...

.. //depot/projects/xen3-newbus/src/sys/dev/xen/xenbus/xenbus_probe.c#4 edit

Differences ...

==== //depot/projects/xen3-newbus/src/sys/dev/xen/xenbus/xenbus_probe.c#4 (text+ko) ====

@@ -1218,15 +1218,11 @@
 	DEVMETHOD(bus_add_child,        xenhub_add_child), 
 	DEVMETHOD(bus_read_ivar,        bus_generic_read_ivar), 
 	DEVMETHOD(bus_write_ivar,       bus_generic_write_ivar), 
-#if 0
 	DEVMETHOD(bus_set_resource,     bus_generic_set_resource), 
 	DEVMETHOD(bus_get_resource,     bus_generic_get_resource),
-#endif 
 	DEVMETHOD(bus_alloc_resource,   bus_generic_alloc_resource), 
 	DEVMETHOD(bus_release_resource, bus_generic_release_resource), 
-#if 0
 	DEVMETHOD(bus_delete_resource,  bus_generic_delete_resource),
-#endif 
 	DEVMETHOD(bus_activate_resource, bus_generic_activate_resource), 
 	DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), 
 	DEVMETHOD(bus_setup_intr,       bus_generic_setup_intr), 
@@ -1235,16 +1231,65 @@
 	{ 0, 0 } 
 }; 
 
-static char driver_name[] = "xenbus";
 static driver_t xenbus_driver = { 
 	"xenhub",
 	xenhub_methods, 
-	sizeof(struct xenhub_device),                      
+	sizeof(struct xenbus_device),                      
 }; 
+
 devclass_t xenhub_devclass; 
  
 DRIVER_MODULE(xenhub, nexus, xenhub_driver, xenhub_devclass, 0, 0); 
 
+struct xenbus_softc {
+	device_t dev;
+	struct xen_bus_type	*xenbus;
+};
+
+static int
+xenbus_prob(device_t dev)
+{
+
+	return (0);
+}
+
+static int
+xenbus_attach(device_t dev)
+{
+	struct xenbus_softc *sc;
+
+	sc = device_get_softc(dev);
+
+	sc->dev = dev;
+	sc->xenbus = device_get_ivars(dev);
+
+	/* Enumerate devices in xenstore */
+	xenbus_probe_device(sc->xenbus);
+
+	return (0);
+}
+
+static device_method_t xenbus_methods[] = {
+	/* Device interface */
+	DEVMETHOD(device_probe,		xenbus_probe),
+	DEVMETHOD(device_attach,	xenbus_attach),
+	DEVMETHOD(device_detach,	bus_generic_detach),
+	DEVMETHOD(device_shutdown,	bus_generic_shutdown),
+	DEVMETHOD(device_suspend,	xenbus_suspend),
+	DEVMETHOD(device_resume,	xenbus_resume),
+	{ 0, 0 }
+};
+
+static driver_t xenbus_driver = {
+	"xenbus",
+	xenbus_methods,
+	sizeof(struct xenbus_softc),
+};
+
+devclass xenbus_devclass;
+
+DRIVER_MODULE(xenbus, xenhub, xenbus_driver, xenbus_devclass, 0, 0);
+
 /*
  * Local variables:
  *  c-file-style: "bsd"