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

[Xen-changelog] g/c unused control message code.



# HG changeset patch
# User cl349@xxxxxxxxxxxxxxxxxxxx
# Node ID 0e2b1e04d4cb536c7c24001e3a0127e05559e238
# Parent  549f4256ab3ceddc0abfba4f52de4a92bf74f766
g/c unused control message code.
Signed-off-by: Christian Limpach <Christian.Limpach@xxxxxxxxxxxx>

diff -r 549f4256ab3c -r 0e2b1e04d4cb tools/python/xen/xend/XendDomain.py
--- a/tools/python/xen/xend/XendDomain.py       Wed Sep  7 17:43:56 2005
+++ b/tools/python/xen/xend/XendDomain.py       Wed Sep  7 18:28:04 2005
@@ -36,7 +36,6 @@
 from xen.xend.XendError import XendError
 from xen.xend.XendLogging import log
 from xen.xend import scheduler
-from xen.xend.server import channel
 from xen.xend.server import relocate
 from xen.xend.uuid import getUuid
 from xen.xend.xenstore import XenNode, DBMap
diff -r 549f4256ab3c -r 0e2b1e04d4cb tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py   Wed Sep  7 17:43:56 2005
+++ b/tools/python/xen/xend/XendDomainInfo.py   Wed Sep  7 18:28:04 2005
@@ -34,8 +34,7 @@
 
 from xen.xend.server import controller
 from xen.xend.server import SrvDaemon; xend = SrvDaemon.instance()
-from xen.xend.server import messages
-from xen.xend.server.channel import EventChannel, channelFactory
+from xen.xend.server.channel import EventChannel
 from xen.util.blkif import blkdev_name_to_number, expand_dev_name
 
 from xen.xend import sxp
@@ -258,7 +257,6 @@
 
         self.target = None
 
-        self.channel = None
         self.store_channel = None
         self.store_mfn = None
         self.console_channel = None
@@ -296,8 +294,6 @@
         self.db.saveDB(save=save, sync=sync)
 
     def exportToDB(self, save=False, sync=False):
-        if self.channel:
-            self.channel.saveToDB(self.db.addChild("channel"), save=save)
         if self.store_channel:
             self.store_channel.saveToDB(self.db.addChild("store_channel"),
                                         save=save)
@@ -329,9 +325,6 @@
 
     def getName(self):
         return self.name
-
-    def getChannel(self):
-        return self.channel
 
     def getStoreChannel(self):
         return self.store_channel
@@ -569,8 +562,6 @@
             sxpr.append(['up_time', str(up_time) ])
             sxpr.append(['start_time', str(self.start_time) ])
 
-        if self.channel:
-            sxpr.append(self.channel.sxpr())
         if self.store_channel:
             sxpr.append(self.store_channel.sxpr())
         if self.store_mfn:
@@ -761,12 +752,6 @@
         """
         self.state = STATE_VM_TERMINATED
         self.release_devices()
-        if self.channel:
-            try:
-                self.channel.close()
-                self.channel = None
-            except:
-                pass
         if self.store_channel:
             try:
                 self.store_channel.close()
@@ -858,20 +843,6 @@
                   id, self.name, self.memory)
         self.setdom(id)
 
-    def openChannel(self, key, local, remote):
-        """Create a control channel to the domain.
-        If saved info is available recreate the channel.
-        
-        @param key db key for the saved data (if any)
-        @param local default local port
-        @param remote default remote port
-        """
-        db = self.db.addChild(key)
-        chan = channelFactory().restoreFromDB(db, self.id, local, remote)
-        #todo: save here?
-        #chan.saveToDB(db)
-        return chan
-
     def eventChannel(self, key):
         """Create an event channel to the domain.
         If saved info is available recreate the channel.
@@ -884,7 +855,6 @@
     def create_channel(self):
         """Create the channels to the domain.
         """
-        self.channel = self.openChannel("channel", 0, 1)
         self.store_channel = self.eventChannel("store_channel")
         self.console_channel = self.eventChannel("console/console_channel")
 
diff -r 549f4256ab3c -r 0e2b1e04d4cb tools/python/xen/xend/server/SrvDaemon.py
--- a/tools/python/xen/xend/server/SrvDaemon.py Wed Sep  7 17:43:56 2005
+++ b/tools/python/xen/xend/server/SrvDaemon.py Wed Sep  7 18:28:04 2005
@@ -17,8 +17,6 @@
 import time
 import glob
 
-from xen.lowlevel import xu
-
 from xen.xend import sxp
 from xen.xend import PrettyPrint
 from xen.xend import EventServer; eserver = EventServer.instance()
@@ -27,7 +25,6 @@
 from xen.xend.XendLogging import log
 from xen.xend import XendRoot; xroot = XendRoot.instance()
 
-import channel
 import controller
 import event
 import relocate
@@ -37,7 +34,6 @@
     """The xend daemon.
     """
     def __init__(self):
-        self.channelF = None
         self.shutdown = 0
         self.traceon = 0
         self.tracefile = None
@@ -298,10 +294,8 @@
         _enforce_dom0_cpus()
         try:
             log.info("Xend Daemon started")
-            self.createFactories()
             event.listenEvent(self)
             relocate.listenRelocation()
-            self.listenChannels()
             servers = SrvServer.create()
             self.daemonize()
             servers.start()
@@ -312,15 +306,7 @@
             log.exception("Exception starting xend (%s)" % ex)
             self.exit(1)
             
-    def createFactories(self):
-        self.channelF = channel.channelFactory()
-
-    def listenChannels(self):
-        self.channelF.start()
-
     def exit(self, rc=0):
-        if self.channelF:
-            self.channelF.stop()
         # Calling sys.exit() raises a SystemExit exception, which only
         # kills the current thread. Calling os._exit() makes the whole
         # Python process exit immediately. There doesn't seem to be another
diff -r 549f4256ab3c -r 0e2b1e04d4cb tools/python/xen/xend/server/blkif.py
--- a/tools/python/xen/xend/server/blkif.py     Wed Sep  7 17:43:56 2005
+++ b/tools/python/xen/xend/server/blkif.py     Wed Sep  7 18:28:04 2005
@@ -27,9 +27,7 @@
 from xen.xend import Blkctl
 from xen.xend.xenstore import DBVar
 
-from xen.xend.server import channel
-from xen.xend.server.controller import CtrlMsgRcvr, Dev, DevController
-from xen.xend.server.messages import *
+from xen.xend.server.controller import Dev, DevController
 
 class BlkifBackend:
     """ Handler for the 'back-end' channel to a block device driver domain
@@ -41,21 +39,15 @@
         self.controller = controller
         self.id = id
         self.frontendDomain = self.controller.getDomain()
-        self.frontendChannel = None
         self.backendDomain = dom
-        self.backendChannel = None
         self.destroyed = False
         self.connected = False
-        self.evtchn = None
         self.status = None
 
     def init(self, recreate=False, reboot=False):
         self.destroyed = False
         self.status = BLKIF_INTERFACE_STATUS_DISCONNECTED
         self.frontendDomain = self.controller.getDomain()
-        self.frontendChannel = self.controller.getChannel()
-        cf = channel.channelFactory()
-        self.backendChannel = cf.openChannel(self.backendDomain)
 
     def __str__(self):
         return ('<BlkifBackend frontend=%d backend=%d id=%d>'
@@ -66,29 +58,6 @@
     def getId(self):
         return self.id
 
-    def getEvtchn(self):
-        return self.evtchn
-
-    def closeEvtchn(self):
-        if self.evtchn:
-            channel.eventChannelClose(self.evtchn)
-            self.evtchn = None
-
-    def openEvtchn(self):
-        self.evtchn = channel.eventChannel(self.backendDomain, 
self.frontendDomain)
-
-    def getEventChannelBackend(self):
-        val = 0
-        if self.evtchn:
-            val = self.evtchn['port1']
-        return val
-
-    def getEventChannelFrontend(self):
-        val = 0
-        if self.evtchn:
-            val = self.evtchn['port2']
-        return val
-
     def connect(self, recreate=False):
         """Connect to the blkif control interface.
 
@@ -98,83 +67,19 @@
         if recreate or self.connected:
             self.connected = True
             pass
-        else:
-            self.send_be_create()
-        
-    def send_be_create(self):
-        log.debug("send_be_create %s", str(self))
-        msg = packMsg('blkif_be_create_t',
-                      { 'domid'        : self.frontendDomain,
-                        'blkif_handle' : self.id })
-        msg = self.backendChannel.requestResponse(msg)
-        #todo: check return status
-        self.connected = True
-
+        
     def destroy(self, change=False, reboot=False):
         """Disconnect from the blkif control interface and destroy it.
         """
-        self.send_be_disconnect()
-        self.send_be_destroy()
-        self.closeEvtchn()
         self.destroyed = True
         # For change true need to notify front-end, or back-end will do it?
 
-    def send_be_disconnect(self):
-        msg = packMsg('blkif_be_disconnect_t',
-                      { 'domid'        : self.frontendDomain,
-                        'blkif_handle' : self.id })
-        self.backendChannel.requestResponse(msg)
-        #todo: check return status
-        self.connected = False
-
-    def send_be_destroy(self):
-        msg = packMsg('blkif_be_destroy_t',
-                      { 'domid'        : self.frontendDomain,
-                        'blkif_handle' : self.id })
-        self.backendChannel.requestResponse(msg)
-        #todo: check return status
-
     def connectInterface(self, val):
-        self.openEvtchn()
-        log.debug("Connecting blkif to event channel %s ports=%d:%d",
-                  str(self), self.evtchn['port1'], self.evtchn['port2'])
-        msg = packMsg('blkif_be_connect_t',
-                      { 'domid'        : self.frontendDomain,
-                        'blkif_handle' : self.id,
-                        'evtchn'       : self.getEventChannelBackend(),
-                        'shmem_frame'  : val['shmem_frame'],
-                        'shmem_ref'    : val['shmem_ref'] })
-        msg = self.backendChannel.requestResponse(msg)
-        #todo: check return status
-        val = unpackMsg('blkif_be_connect_t', msg)
         self.status = BLKIF_INTERFACE_STATUS_CONNECTED
-        self.send_fe_interface_status()
             
-    def send_fe_interface_status(self):
-        msg = packMsg('blkif_fe_interface_status_t',
-                      { 'handle' : self.id,
-                        'status' : self.status,
-                        'domid'  : self.backendDomain,
-                        'evtchn' : self.getEventChannelFrontend() })
-        self.frontendChannel.writeRequest(msg)
-
     def interfaceDisconnected(self):
         self.status = BLKIF_INTERFACE_STATUS_DISCONNECTED
-        #todo?: Close evtchn:
-        #self.closeEvtchn()
-        self.send_fe_interface_status()
-        
-    def interfaceChanged(self):
-        """Notify the front-end that devices have been added or removed.
-        The front-end should then probe for devices.
-        """
-        msg = packMsg('blkif_fe_interface_status_t',
-                      { 'handle' : self.id,
-                        'status' : BLKIF_INTERFACE_STATUS_CHANGED,
-                        'domid'  : self.backendDomain,
-                        'evtchn' : 0 })
-        self.frontendChannel.writeRequest(msg)
-
+        
 class BlkDev(Dev):
     """Info record for a block device.
     """
@@ -207,24 +112,17 @@
         self.nr_sectors = None
         
         self.frontendDomain = self.getDomain()
-        self.frontendChannel = None
         self.backendDomain = None
-        self.backendChannel = None
         self.backendId = 0
         self.configure(self.config, recreate=recreate)
 
     def exportToDB(self, save=False):
         Dev.exportToDB(self, save=save)
         backend = self.getBackend()
-        if backend and backend.evtchn:
-            db = self.db.addChild("evtchn")
-            backend.evtchn.saveToDB(db, save=save)
 
     def init(self, recreate=False, reboot=False):
         self.frontendDomain = self.getDomain()
-        self.frontendChannel = self.getChannel()
         backend = self.getBackend()
-        self.backendChannel = backend.backendChannel
         self.backendId = backend.id
 
     def configure(self, config, change=False, recreate=False):
@@ -351,7 +249,6 @@
         self.destroyed = True
         log.debug("Destroying vbd domain=%d id=%s", self.frontendDomain,
                   self.id)
-        self.send_be_vbd_destroy()
         if change:
             self.interfaceChanged()
         self.unbind()
@@ -367,30 +264,6 @@
 
         """
         self.getBackend().connect()
-        self.send_be_vbd_create()
-        
-    def send_be_vbd_create(self):
-        msg = packMsg('blkif_be_vbd_create_t',
-                      { 'domid'        : self.frontendDomain,
-                        'blkif_handle' : self.backendId,
-                        'pdevice'      : self.device,
-                        'dev_handle'   : self.dev_handle,
-                        'vdevice'      : self.vdev,
-                        'readonly'     : self.readonly() })
-        msg = self.backendChannel.requestResponse(msg)
-        
-        val = unpackMsg('blkif_be_vbd_create_t', msg)
-        status = val['status']
-        if status != BLKIF_BE_STATUS_OKAY:
-            raise XendError("Creating vbd failed: device %s, error %d"
-                            % (sxp.to_string(self.config), status))
-
-    def send_be_vbd_destroy(self):
-        msg = packMsg('blkif_be_vbd_destroy_t',
-                      { 'domid'                : self.frontendDomain,
-                        'blkif_handle'         : self.backendId,
-                        'vdevice'              : self.vdev })
-        return self.backendChannel.writeRequest(msg)
         
 class BlkifController(DevController):
     """Block device interface controller. Handles all block devices
@@ -403,19 +276,9 @@
         DevController.__init__(self, vm, recreate=recreate)
         self.backends = {}
         self.backendId = 0
-        self.rcvr = None
 
     def initController(self, recreate=False, reboot=False):
         self.destroyed = False
-        # Add our handlers for incoming requests.
-        self.rcvr = CtrlMsgRcvr(self.getChannel())
-        self.rcvr.addHandler(CMSG_BLKIF_FE,
-                             CMSG_BLKIF_FE_DRIVER_STATUS,
-                             self.recv_fe_driver_status)
-        self.rcvr.addHandler(CMSG_BLKIF_FE,
-                             CMSG_BLKIF_FE_INTERFACE_CONNECT,
-                             self.recv_fe_interface_connect)
-        self.rcvr.registerChannel()
         if reboot:
             self.rebootBackends()
             self.rebootDevices()
@@ -465,26 +328,7 @@
         log.debug("Destroying blkif domain=%d", self.getDomain())
         self.destroyDevices(reboot=reboot)
         self.destroyBackends(reboot=reboot)
-        self.rcvr.deregisterChannel()
 
     def destroyBackends(self, reboot=False):
         for backend in self.backends.values():
             backend.destroy(reboot=reboot)
-
-    def recv_fe_driver_status(self, msg):
-        val = unpackMsg('blkif_fe_driver_status_t', msg)
-        for backend in self.backends.values():
-            backend.interfaceDisconnected()
-
-    def recv_fe_interface_connect(self, msg):
-        val = unpackMsg('blkif_fe_interface_connect_t', msg)
-        id = val['handle']
-        backend = self.getBackendById(id)
-        if backend:
-            try:
-                backend.connectInterface(val)
-            except IOError, ex:
-                log.error("Exception connecting backend: %s", ex)
-        else:
-            log.error('interface connect on unknown interface: id=%d', id)
-
diff -r 549f4256ab3c -r 0e2b1e04d4cb tools/python/xen/xend/server/channel.py
--- a/tools/python/xen/xend/server/channel.py   Wed Sep  7 17:43:56 2005
+++ b/tools/python/xen/xend/server/channel.py   Wed Sep  7 18:28:04 2005
@@ -22,8 +22,6 @@
 from xen.lowlevel import xu
 
 from xen.xend.XendLogging import log
-
-from messages import *
 
 DEBUG = 0
 
@@ -132,473 +130,3 @@
     """
     if not evtchn: return
     evtchn.close()
-
-class ChannelFactory:
-    """Factory for creating control channels.
-    Maintains a table of channels.
-    """
-
-    """ Channels indexed by index. """
-    channels = None
-
-    thread = None
-
-    notifier = None
-
-    def __init__(self):
-        """Constructor - do not use. Use the channelFactory function."""
-        self.channels = {}
-        self.notifier = xu.notifier()
-
-    def start(self):
-        """Fork a thread to read messages.
-        """
-        if self.thread: return
-        self.thread = threading.Thread(name="ChannelFactory",
-                                       target=self.main)
-        self.thread.setDaemon(True)
-        self.thread.start()
-
-    def stop(self):
-        """Signal the thread to stop.
-        """
-        self.thread = None
-
-    def main(self):
-        """Main routine for the thread.
-        Reads the notifier and dispatches to channels.
-        """
-        while True:
-            if self.thread == None: return
-            port = self.notifier.read()
-            if port:
-                self.msgReceived(port)
-            else:
-                select.select([self.notifier], [], [], 1.0)
-
-    def msgReceived(self, port):
-        # We run the message handlers in their own threads.
-        # Note we use keyword args to lambda to save the values -
-        # otherwise lambda will use the variables, which will get
-        # assigned by the loop and the lambda will get the changed values.
-        received = 0
-        for chan in self.channels.values():
-            if self.thread == None: return
-            msg = chan.readResponse()
-            if msg:
-                received += 1
-                chan.responseReceived(msg)
-        for chan in self.channels.values():
-            if self.thread == None: return
-            msg = chan.readRequest()
-            if msg:
-                received += 1
-                self.runInThread(lambda chan=chan, msg=msg: 
chan.requestReceived(msg))
-        if port and received == 0:
-            log.warning("Port %s notified, but no messages found", port)
-
-    def runInThread(self, thunk):
-        thread = threading.Thread(target = thunk)
-        thread.setDaemon(True)
-        thread.start()
-
-    def newChannel(self, dom, local_port, remote_port):
-        """Create a new channel.
-        """
-        return self.addChannel(Channel(self, dom, local_port, remote_port))
-    
-    def addChannel(self, channel):
-        """Add a channel.
-        """
-        self.channels[channel.getKey()] = channel
-        return channel
-
-    def delChannel(self, channel):
-        """Remove the channel.
-        """
-        key = channel.getKey()
-        if key in self.channels:
-            del self.channels[key]
-
-    def getChannel(self, dom, local_port, remote_port):
-        """Get the channel with the given domain and ports (if any).
-        """
-        key = (dom, local_port, remote_port)
-        return self.channels.get(key)
-
-    def findChannel(self, dom, local_port=0, remote_port=0):
-        """Find a channel. Ports given as zero are wildcards.
-
-        dom domain
-
-        returns channel
-        """
-        chan = self.getChannel(dom, local_port, remote_port)
-        if chan: return chan
-        if local_port and remote_port:
-            return None
-        for c in self.channels.values():
-            if c.dom != dom: continue
-            if local_port and local_port != c.getLocalPort(): continue
-            if remote_port and remote_port != c.getRemotePort(): continue
-            return c
-        return None
-
-    def openChannel(self, dom, local_port=0, remote_port=0):
-        chan = self.findChannel(dom, local_port=local_port,
-                                remote_port=remote_port)
-        if chan:
-            return chan
-        chan = self.newChannel(dom, local_port, remote_port)
-        return chan
-        
-
-    def createPort(self, dom, local_port=0, remote_port=0):
-        """Create a port for a channel to the given domain.
-        If only the domain is specified, a new channel with new port ids is
-        created.  If one port id is specified and the given port id is in use,
-        the other port id is filled.  If one port id is specified and the
-        given port id is not in use, a new channel is created with one port
-        id equal to the given id and a new id for the other end.  If both
-        port ids are specified, a port is reconnected using the given port
-        ids.
-
-        @param dom: domain
-        @param local: local port id to use
-        @type  local: int
-        @param remote: remote port id to use
-        @type  remote: int
-        @return: port object
-        """
-        return xu.port(dom, local_port=local_port, remote_port=remote_port)
-
-    def restoreFromDB(self, db, dom, local, remote):
-        """Create a channel using ports restored from the db (if available).
-        Otherwise use the given ports. This is the inverse operation to
-        saveToDB() on a channel.
-
-        @param db db
-        @param dom  domain the channel connects to
-        @param local default local port
-        @param remote default remote port
-        """
-        try:
-            local_port  = int(db['local_port'])
-        except:
-            local_port = local
-        try:
-            remote_port = int(db['remote_port'])
-        except:
-            remote_port = remote
-        try:
-            chan = self.openChannel(dom, local_port, remote_port)
-        except:
-            return None
-        return chan
-
-def channelFactory():
-    """Singleton constructor for the channel factory.
-    Use this instead of the class constructor.
-    """
-    global inst
-    try:
-        inst
-    except:
-        inst = ChannelFactory()
-    return inst
-
-class Channel:
-    """Control channel to a domain.
-    Maintains a list of device handlers to dispatch requests to, based
-    on the request type.
-    """
-
-    def __init__(self, factory, dom, local_port, remote_port):
-        self.factory = factory
-        self.dom = int(dom)
-        # Registered device handlers.
-        self.devs = []
-        # Handlers indexed by the message types they handle.
-        self.devs_by_type = {}
-        self.port = self.factory.createPort(self.dom,
-                                            local_port=local_port,
-                                            remote_port=remote_port)
-        self.closed = False
-        # Queue of waiters for responses to requests.
-        self.queue = ResponseQueue(self)
-        # Make sure the port will deliver all the messages.
-        self.port.register(TYPE_WILDCARD)
-
-    def saveToDB(self, db, save=False):
-        """Save the channel ports to the db so the channel can be restored 
later,
-        using restoreFromDB() on the factory.
-
-        @param db db
-        """
-        if self.closed: return
-        db['local_port'] = str(self.getLocalPort())
-        db['remote_port'] = str(self.getRemotePort())
-        db.saveDB(save=save)
-
-    def getKey(self):
-        """Get the channel key.
-        """
-        return (self.dom, self.getLocalPort(), self.getRemotePort())
-
-    def sxpr(self):
-        val = ['channel']
-        val.append(['domain', self.dom])
-        if self.port:
-            val.append(['local_port', self.port.local_port])
-            val.append(['remote_port', self.port.remote_port])
-        return val
-
-    def close(self):
-        """Close the channel.
-        """
-        if DEBUG:
-            print 'Channel>close>', self
-        if self.closed: return
-        self.closed = True
-        self.factory.delChannel(self)
-        for d in self.devs[:]:
-            d.lostChannel(self)
-        self.devs = []
-        self.devs_by_type = {}
-        if self.port:
-            self.port.close()
-            #self.port = None
-
-    def getDomain(self):
-        return self.dom
-
-    def getLocalPort(self):
-        """Get the local port.
-
-        @return: local port
-        @rtype:  int
-        """
-        if self.closed: return -1
-        return self.port.local_port
-
-    def getRemotePort(self):
-        """Get the remote port.
-
-        @return: remote port
-        @rtype:  int
-        """
-        if self.closed: return -1
-        return self.port.remote_port
-
-    def __repr__(self):
-        return ('<Channel dom=%d ports=%d:%d>'
-                % (self.dom,
-                   self.getLocalPort(),
-                   self.getRemotePort()))
-
-
-    def registerDevice(self, types, dev):
-        """Register a device message handler.
-
-        @param types: message types handled
-        @type  types: array of ints
-        @param dev:   device handler
-        """
-        if self.closed: return
-        self.devs.append(dev)
-        for ty in types:
-            self.devs_by_type[ty] = dev
-
-    def deregisterDevice(self, dev):
-        """Remove the registration for a device handler.
-
-        @param dev: device handler
-        """
-        if dev in self.devs:
-            self.devs.remove(dev)
-        types = [ ty for (ty, d) in self.devs_by_type.items() if d == dev ]
-        for ty in types:
-            del self.devs_by_type[ty]
-
-    def getDevice(self, type):
-        """Get the handler for a message type.
-
-        @param type: message type
-        @type  type: int
-        @return: controller or None
-        @rtype:  device handler
-        """
-        return self.devs_by_type.get(type)
-
-    def requestReceived(self, msg):
-        """A request has been received on the channel.
-        Disptach it to the device handlers.
-        Called from the channel factory thread.
-        """
-        if DEBUG:
-            print 'Channel>requestReceived>', self,
-            printMsg(msg)
-        (ty, subty) = getMessageType(msg)
-        responded = False
-        dev = self.getDevice(ty)
-        if dev:
-            responded = dev.requestReceived(msg, ty, subty)
-        elif DEBUG:
-            print "Channel>requestReceived> No device handler", self,
-            printMsg(msg)
-        else:
-            pass
-        if not responded:
-            self.writeResponse(msg)
-
-    def writeRequest(self, msg):
-        """Write a request to the channel.
-        """
-        if DEBUG:
-            print 'Channel>writeRequest>', self,
-            printMsg(msg, all=True)
-        if self.closed: return -1
-        self.port.write_request(msg)
-        return 1
-
-    def writeResponse(self, msg):
-        """Write a response to the channel.
-        """
-        if DEBUG:
-            print 'Channel>writeResponse>', self,
-            printMsg(msg, all=True)
-        if self.port:
-            self.port.write_response(msg)
-        return 1
-
-    def readRequest(self):
-        """Read a request from the channel.
-        Called internally.
-        """
-        if self.closed:
-            val =  None
-        else:
-            val = self.port.read_request()
-        return val
-        
-    def readResponse(self):
-        """Read a response from the channel.
-        Called internally.
-        """
-        if self.closed:
-            val = None
-        else:
-            val = self.port.read_response()
-        if DEBUG and val:
-            print 'Channel>readResponse>', self,
-            printMsg(val, all=True)
-        return val
-
-    def requestResponse(self, msg, timeout=None):
-        """Write a request and wait for a response.
-        Raises IOError on timeout.
-
-        @param msg request message
-        @param timeout timeout (0 is forever)
-        @return response message
-        """
-        if self.closed:
-            raise IOError("closed")
-        if self.closed:
-            return None
-        if timeout is None:
-            timeout = RESPONSE_TIMEOUT
-        elif timeout <= 0:
-            timeout = None
-        return self.queue.call(msg, timeout)
-
-    def responseReceived(self, msg):
-        """A response has been received, look for a waiter to
-        give it to.
-        Called internally.
-        """
-        if DEBUG:
-            print 'Channel>responseReceived>', self,
-            printMsg(msg)
-        self.queue.response(getMessageId(msg), msg)
-
-class Response:
-    """Entry in the response queue.
-    Used to signal a response to a message.
-    """
-
-    def __init__(self, mid):
-        self.mid = mid
-        self.msg = None
-        self.ready = threading.Event()
-
-    def response(self, msg):
-        """Signal arrival of a response to a waiting thread.
-        Passing msg None cancels the wait with an IOError.
-        """
-        if msg:
-            self.msg = msg
-        else:
-            self.mid = -1
-        self.ready.set()
-
-    def wait(self, timeout):
-        """Wait up to 'timeout' seconds for a response.
-        Returns the response or raises an IOError.
-        """
-        self.ready.wait(timeout)
-        if self.mid < 0:
-            raise IOError("wait canceled")
-        if self.msg is None:
-            raise IOError("response timeout")
-        return self.msg
-
-class ResponseQueue:
-    """Response queue. Manages waiters for responses to messages.
-    """
-
-    def __init__(self, channel):
-        self.channel = channel
-        self.lock = threading.Lock()
-        self.responses = {}
-
-    def add(self, mid):
-        r = Response(mid)
-        self.responses[mid] = r
-        return r
-
-    def get(self, mid):
-        return self.responses.get(mid)
-
-    def remove(self, mid):
-        r = self.responses.get(mid)
-        if r:
-            del self.responses[mid]
-        return r
-
-    def response(self, mid, msg):
-        """Process a response - signals any waiter that a response
-        has arrived.
-        """
-        try:
-            self.lock.acquire()
-            r = self.remove(mid)
-        finally:
-            self.lock.release()
-        if r:
-            r.response(msg)
-
-    def call(self, msg, timeout):
-        """Send the message and wait for 'timeout' seconds for a response.
-        Returns the response.
-        Raises IOError on timeout.
-        """
-        mid = getMessageId(msg)
-        try:
-            self.lock.acquire()
-            r = self.add(mid)
-        finally:
-            self.lock.release()
-        self.channel.writeRequest(msg)
-        return r.wait(timeout)
-                
diff -r 549f4256ab3c -r 0e2b1e04d4cb tools/python/xen/xend/server/controller.py
--- a/tools/python/xen/xend/server/controller.py        Wed Sep  7 17:43:56 2005
+++ b/tools/python/xen/xend/server/controller.py        Wed Sep  7 18:28:04 2005
@@ -21,106 +21,8 @@
 
 from xen.xend.XendError import XendError
 from xen.xend.xenstore import DBVar
-from xen.xend.server.messages import msgTypeName, printMsg, getMessageType
 
 DEBUG = 0
-
-class CtrlMsgRcvr:
-    """Utility class to dispatch messages on a control channel.
-    Once I{registerChannel} has been called, our message types are registered
-    with the channel. The channel will call I{requestReceived}
-    when a request arrives if it has one of our message types.
-
-    @ivar channel: channel to a domain
-    @type channel: Channel
-    @ivar majorTypes: major message types we are interested in
-    @type majorTypes: {int:{int:method}}
-    
-    """
-
-    def __init__(self, channel):
-        self.majorTypes = {}
-        self.channel = channel
-
-    def getHandler(self, type, subtype):
-        """Get the method for a type and subtype.
-
-        @param type: major message type
-        @param subtype: minor message type
-        @return: method or None
-        """
-        method = None
-        subtypes = self.majorTypes.get(type)
-        if subtypes:
-            method = subtypes.get(subtype)
-        return method
-
-    def addHandler(self, type, subtype, method):
-        """Add a method to handle a message type and subtype.
-        
-        @param type: major message type
-        @param subtype: minor message type
-        @param method: method
-        """
-        subtypes = self.majorTypes.get(type)
-        if not subtypes:
-            subtypes = {}
-            self.majorTypes[type] = subtypes
-        subtypes[subtype] = method
-
-    def getMajorTypes(self):
-        """Get the list of major message types handled.
-        """
-        return self.majorTypes.keys()
-
-    def requestReceived(self, msg, type, subtype):
-        """Dispatch a request message to handlers.
-        Called by the channel for requests with one of our types.
-
-        @param msg:     message
-        @type  msg:     xu message
-        @param type:    major message type
-        @type  type:    int
-        @param subtype: minor message type
-        @type  subtype: int
-        """
-        if DEBUG:
-            print 'requestReceived>',
-            printMsg(msg, all=True)
-        responded = 0
-        method = self.getHandler(type, subtype)
-        if method:
-            responded = method(msg)
-        elif DEBUG:
-            print ('requestReceived> No handler: Message type %s %d:%d'
-                   % (msgTypeName(type, subtype), type, subtype)), self
-        return responded
-        
-
-    def lostChannel(self):
-        """Called when the channel to the domain is lost.
-        """
-        if DEBUG:
-            print 'CtrlMsgRcvr>lostChannel>',
-        self.channel = None
-    
-    def registerChannel(self):
-        """Register interest in our major message types with the
-        channel to our domain. Once we have registered, the channel
-        will call requestReceived for our messages.
-        """
-        if DEBUG:
-            print 'CtrlMsgRcvr>registerChannel>', self.channel, 
self.getMajorTypes()
-        if self.channel:
-            self.channel.registerDevice(self.getMajorTypes(), self)
-        
-    def deregisterChannel(self):
-        """Deregister interest in our major message types with the
-        channel to our domain. After this the channel won't call
-        us any more.
-        """
-        if self.channel:
-            self.channel.deregisterDevice(self)
 
 class DevControllerTable:
     """Table of device controller classes, indexed by type name.
@@ -232,10 +134,6 @@
     def getDomainName(self):
         return self.vm.getName()
 
-    def getChannel(self):
-        chan = self.vm.getChannel()
-        return chan
-    
     def getDomainInfo(self):
         return self.vm
 
@@ -433,9 +331,6 @@
     def getDomainName(self):
         return self.controller.getDomainName()
 
-    def getChannel(self):
-        return self.controller.getChannel()
-    
     def getDomainInfo(self):
         return self.controller.getDomainInfo()
     
diff -r 549f4256ab3c -r 0e2b1e04d4cb tools/python/xen/xend/server/event.py
--- a/tools/python/xen/xend/server/event.py     Wed Sep  7 17:43:56 2005
+++ b/tools/python/xen/xend/server/event.py     Wed Sep  7 18:28:04 2005
@@ -174,11 +174,6 @@
         else:
             logging.removeLogStderr()
 
-    def op_debug_msg(self, name, v):
-        mode = v[1]
-        import messages
-        messages.DEBUG = (mode == 'on')
-
     def op_debug_controller(self, name, v):
         mode = v[1]
         import controller
diff -r 549f4256ab3c -r 0e2b1e04d4cb tools/python/xen/xend/server/netif.py
--- a/tools/python/xen/xend/server/netif.py     Wed Sep  7 17:43:56 2005
+++ b/tools/python/xen/xend/server/netif.py     Wed Sep  7 18:28:04 2005
@@ -30,9 +30,7 @@
 from xen.xend.XendRoot import get_component
 from xen.xend.xenstore import DBVar
 
-from xen.xend.server import channel
-from xen.xend.server.controller import CtrlMsgRcvr, Dev, DevController
-from xen.xend.server.messages import *
+from xen.xend.server.controller import Dev, DevController
 
 class NetDev(Dev):
     """A network device.
@@ -90,12 +88,9 @@
     def __init__(self, controller, id, config, recreate=False):
         Dev.__init__(self, controller, id, config, recreate=recreate)
         self.vif = int(self.id)
-        self.evtchn = None
         self.status = None
         self.frontendDomain = self.getDomain()
-        self.frontendChannel = None
         self.backendDomain = None
-        self.backendChannel = None
         self.credit = None
         self.period = None
         self.mac = None
@@ -109,17 +104,11 @@
 
     def exportToDB(self, save=False):
         Dev.exportToDB(self, save=save)
-        if self.evtchn:
-            db = self.db.addChild("evtchn")
-            self.evtchn.saveToDB(db, save=save)
 
     def init(self, recreate=False, reboot=False):
         self.destroyed = False
         self.status = NETIF_INTERFACE_STATUS_DISCONNECTED
         self.frontendDomain = self.getDomain()
-        self.frontendChannel = self.getChannel()
-        cf = channel.channelFactory()
-        self.backendChannel = cf.openChannel(self.backendDomain)
 
     def _get_config_mac(self, config):
         vmac = sxp.child_value(config, 'mac')
@@ -287,10 +276,6 @@
             val.append(['credit', self.credit])
         if self.period:
             val.append(['period', self.period])
-        if self.evtchn:
-            val.append(['evtchn',
-                        self.evtchn['port1'],
-                        self.evtchn['port2']])
         return val
 
     def get_vifname(self):
@@ -348,42 +333,11 @@
         if recreate:
             pass
         else:
-            self.send_be_create()
             if self.credit and self.period:
-                self.send_be_creditlimit(self.credit, self.period)
+                #self.send_be_creditlimit(self.credit, self.period)
+                pass
             self.vifctl('up', vmname=self.getDomainName())
         
-    def closeEvtchn(self):
-        if self.evtchn:
-            channel.eventChannelClose(self.evtchn)
-            self.evtchn = None
-
-    def openEvtchn(self):
-        self.evtchn = channel.eventChannel(self.backendDomain, 
self.frontendDomain)
-        
-    def getEventChannelBackend(self):
-        val = 0
-        if self.evtchn:
-            val = self.evtchn['port1']
-        return val
-
-    def getEventChannelFrontend(self):
-        val = 0
-        if self.evtchn:
-            val = self.evtchn['port2']
-        return val
-
-    def send_be_create(self):
-        msg = packMsg('netif_be_create_t',
-                      { 'domid'        : self.frontendDomain,
-                        'netif_handle' : self.vif,
-                        'be_mac'       : self.be_mac or [0, 0, 0, 0, 0, 0],
-                        'mac'          : self.mac,
-                        #'vifname'      : self.vifname
-                        })
-        msg = self.backendChannel.requestResponse(msg)
-        # todo: check return status
-
     def destroy(self, change=False, reboot=False):
         """Destroy the device's resources and disconnect from the back-end
         device controller. If 'change' is true notify the front-end interface.
@@ -393,47 +347,14 @@
         self.destroyed = True
         self.status = NETIF_INTERFACE_STATUS_CLOSED
         log.debug("Destroying vif domain=%d vif=%d", self.frontendDomain, 
self.vif)
-        self.closeEvtchn()
         self.vifctl('down')
-        self.send_be_disconnect()
-        self.send_be_destroy()
         if change:
             self.reportStatus()
-
-    def send_be_disconnect(self):
-        msg = packMsg('netif_be_disconnect_t',
-                      { 'domid'        : self.frontendDomain,
-                        'netif_handle' : self.vif })
-        self.backendChannel.requestResponse(msg)
-        #todo: check return status
-
-    def send_be_destroy(self, response=None):
-        msg = packMsg('netif_be_destroy_t',
-                      { 'domid'        : self.frontendDomain,
-                        'netif_handle' : self.vif })
-        self.backendChannel.requestResponse(msg)
-        #todo: check return status
-    
-    def recv_fe_interface_connect(self, val):
-        self.openEvtchn()
-        msg = packMsg('netif_be_connect_t',
-                      { 'domid'          : self.frontendDomain,
-                        'netif_handle'   : self.vif,
-                        'evtchn'         : self.getEventChannelBackend(),
-                        'tx_shmem_frame' : val['tx_shmem_frame'],
-                        'tx_shmem_ref'   : val['tx_shmem_ref'],
-                        'rx_shmem_frame' : val['rx_shmem_frame'],
-                        'rx_shmem_ref'   : val['rx_shmem_ref'] })
-        msg = self.backendChannel.requestResponse(msg)
-        #todo: check return status
-        self.status = NETIF_INTERFACE_STATUS_CONNECTED
-        self.reportStatus()
 
     def setCreditLimit(self, credit, period):
         #todo: these params should be in sxpr and vif config.
         self.credit = credit
         self.period = period
-        self.send_be_creditlimit(credit, period)
 
     def getCredit(self):
         return self.credit
@@ -441,31 +362,10 @@
     def getPeriod(self):
         return self.period
         
-    def send_be_creditlimit(self, credit, period):
-        msg = packMsg('netif_be_creditlimit_t',
-                      { 'domid'          : self.frontendDomain,
-                        'netif_handle'   : self.vif,
-                        'credit_bytes'   : credit,
-                        'period_usec'    : period })
-        msg = self.backendChannel.requestResponse(msg)
-        # todo: check return status
-        
-    def reportStatus(self, resp=False):
-        msg = packMsg('netif_fe_interface_status_t',
-                      { 'handle' : self.vif,
-                        'status' : self.status,
-                        'evtchn' : self.getEventChannelFrontend(),
-                        'domid'  : self.backendDomain,
-                        'mac'    : self.mac })
-        if resp:
-            self.frontendChannel.writeResponse(msg)
-        else:
-            self.frontendChannel.writeRequest(msg)
-
     def interfaceChanged(self):
         """Notify the front-end that a device has been added or removed.
         """
-        self.reportStatus()
+        pass
         
 class NetifController(DevController):
     """Network interface controller. Handles all network devices for a domain.
@@ -473,25 +373,9 @@
     
     def __init__(self, vm, recreate=False):
         DevController.__init__(self, vm, recreate=recreate)
-        self.channel = None
-        self.rcvr = None
-        self.channel = None
 
     def initController(self, recreate=False, reboot=False):
         self.destroyed = False
-        self.channel = self.getChannel()
-        # Register our handlers for incoming requests.
-        self.rcvr = CtrlMsgRcvr(self.channel)
-        self.rcvr.addHandler(CMSG_NETIF_FE,
-                             CMSG_NETIF_FE_DRIVER_STATUS,
-                             self.recv_fe_driver_status)
-        self.rcvr.addHandler(CMSG_NETIF_FE,
-                             CMSG_NETIF_FE_INTERFACE_STATUS,
-                             self.recv_fe_interface_status)
-        self.rcvr.addHandler(CMSG_NETIF_FE,
-                             CMSG_NETIF_FE_INTERFACE_CONNECT,
-                             self.recv_fe_interface_connect)
-        self.rcvr.registerChannel()
         if reboot:
             self.rebootDevices()
 
@@ -501,8 +385,6 @@
         self.destroyed = True
         log.debug("Destroying netif domain=%d", self.getDomain())
         self.destroyDevices(reboot=reboot)
-        if self.rcvr:
-            self.rcvr.deregisterChannel()
 
     def sxpr(self):
         val = ['netif', ['dom', self.getDomain()]]
@@ -524,57 +406,3 @@
         
         dev = self.devices[vif]
         return dev.setCreditLimit(credit, period)
-    
-    def recv_fe_driver_status(self, msg):
-        msg = packMsg('netif_fe_driver_status_t',
-                      { 'status'     : NETIF_DRIVER_STATUS_UP,
-                        ## FIXME: max_handle should be max active interface id
-                        'max_handle' : self.getDeviceCount()
-                        #'max_handle' : self.getMaxDeviceId()
-                        })
-        # Two ways of doing it:
-        # 1) front-end requests driver status, we reply with the interface 
count,
-        #    front-end polls the interfaces,
-        #    front-end checks they are all up
-        # 2) front-end requests driver status, we reply (with anything),
-        #    we notify the interfaces,
-        #    we notify driver status up with the count
-        #    front-end checks they are all up
-        #
-        # We really want to use 1), but at the moment the xenU kernel panics
-        # in that mode, so we're sticking to 2) for now.
-        resp = False
-        if resp:
-            self.channel.writeResponse(msg)
-        else:
-            for dev in self.devices.values():
-                dev.reportStatus()
-            self.channel.writeRequest(msg)
-        return resp
-
-    def recv_fe_interface_status(self, msg):
-        val = unpackMsg('netif_fe_interface_status_t', msg)
-        vif = val['handle']
-        dev = self.findDevice(vif)
-        if dev:
-            dev.reportStatus(resp=True)
-        else:
-            log.error('Received netif_fe_interface_status for unknown vif: 
dom=%d vif=%d',
-                      self.getDomain(), vif)
-            msg = packMsg('netif_fe_interface_status_t',
-                          { 'handle' : -1,
-                            'status' : NETIF_INTERFACE_STATUS_CLOSED,
-                            });
-            self.channel.writeResponse(msg)
-        return True
-            
-    def recv_fe_interface_connect(self, msg):
-        val = unpackMsg('netif_fe_interface_connect_t', msg)
-        vif = val['handle']
-        dev = self.getDevice(vif)
-        if dev:
-            dev.recv_fe_interface_connect(val)
-        else:
-            log.error('Received netif_fe_interface_connect for unknown vif: 
dom=%d vif=%d',
-                      self.getDomain(), vif)
-
diff -r 549f4256ab3c -r 0e2b1e04d4cb tools/python/xen/xend/server/tpmif.py
--- a/tools/python/xen/xend/server/tpmif.py     Wed Sep  7 17:43:56 2005
+++ b/tools/python/xen/xend/server/tpmif.py     Wed Sep  7 18:28:04 2005
@@ -13,9 +13,7 @@
 from xen.xend.XendRoot import get_component
 from xen.xend.xenstore import DBVar
 
-from xen.xend.server import channel
-from xen.xend.server.controller import CtrlMsgRcvr, Dev, DevController
-from xen.xend.server.messages import *
+from xen.xend.server.controller import Dev, DevController
 
 class TPMifController(DevController):
     """TPM interface controller. Handles all TPM devices for a domain.
@@ -23,20 +21,15 @@
 
     def __init__(self, vm, recreate=False):
         DevController.__init__(self, vm, recreate=recreate)
-        self.rcvr = None
-        self.channel = None
 
     def initController(self, recreate=False, reboot=False):
         self.destroyed = False
-        self.channel = self.getChannel()
 
     def destroyController(self, reboot=False):
         """Destroy the controller and all devices.
         """
         self.destroyed = True
         self.destroyDevices(reboot=reboot)
-        if self.rcvr:
-            self.rcvr.deregisterChannel()
 
     def sxpr(self):
         val = ['tpmif', ['dom', self.getDomain()]]
diff -r 549f4256ab3c -r 0e2b1e04d4cb tools/python/xen/xend/server/usbif.py
--- a/tools/python/xen/xend/server/usbif.py     Wed Sep  7 17:43:56 2005
+++ b/tools/python/xen/xend/server/usbif.py     Wed Sep  7 18:28:04 2005
@@ -9,9 +9,7 @@
 from xen.xend.XendError import XendError
 from xen.xend.xenstore import DBVar
 
-from xen.xend.server import channel
 from xen.xend.server.controller import Dev, DevController
-from xen.xend.server.messages import *
 
 class UsbBackend:
     """Handler for the 'back-end' channel to a USB device driver domain
@@ -25,39 +23,15 @@
         self.connecting = False
         self.frontendDomain = self.controller.getDomain()
         self.backendDomain = dom
-        self.frontendChannel = None
-        self.backendChannel = None
 
     def init(self, recreate=False, reboot=False):
-        self.frontendChannel = self.controller.getChannel()
-        cf = channel.channelFactory()
-        self.backendChannel = cf.openChannel(self.backendDomain)
-
+        pass
+    
     def __str__(self):
         return ('<UsbifBackend frontend=%d backend=%d id=%d>'
                 % (self.frontendDomain,
                    self.backendDomain,
                    self.id))
-
-    def closeEvtchn(self):
-        if self.evtchn:
-            channel.eventChannelClose(self.evtchn)
-            self.evtchn = None
-
-    def openEvtchn(self):
-        self.evtchn = channel.eventChannel(self.backendDomain, 
self.frontendDomain)
-        
-    def getEventChannelBackend(self):
-        val = 0
-        if self.evtchn:
-            val = self.evtchn['port1']
-        return val
-
-    def getEventChannelFrontend(self):
-        val = 0
-        if self.evtchn:
-            val = self.evtchn['port2']
-        return val
 
     def connect(self, recreate=False):
         """Connect the controller to the usbif control interface.
@@ -67,78 +41,14 @@
         log.debug("Connecting usbif %s", str(self))
         if recreate or self.connected or self.connecting:
             pass
-        else:
-            self.send_be_create()
         
-    def send_be_create(self):
-        msg = packMsg('usbif_be_create_t',
-                      { 'domid'        : self.frontendDomain })
-        msg = self.backendChannel.requestResponse(msg)
-        val = unpackMsg('usbif_be_create_t', msg)
-        log.debug('>UsbifBackendController>respond_be_create> %s', str(val))
-        self.connected = True
-    
     def destroy(self, reboot=False):
         """Disconnect from the usbif control interface and destroy it.
         """
         self.destroyed = True
-        self.send_be_disconnect()
-        self.send_be_destroy()
-        self.closeEvtchn()
         
-    def send_be_disconnect(self):
-        log.debug('>UsbifBackendController>send_be_disconnect> %s', str(self))
-        msg = packMsg('usbif_be_disconnect_t',
-                      { 'domid'        : self.frontendDomain })
-        self.backendChannel.requestResponse(msg)
-
-    def send_be_destroy(self, response=None):
-        log.debug('>UsbifBackendController>send_be_destroy> %s', str(self))
-        msg = packMsg('usbif_be_destroy_t',
-                      { 'domid'        : self.frontendDomain })
-        self.backendChannel.requestResponse(msg)
-        #todo: check return status
-
-    
-    def connectInterface(self, val):
-        self.openEvtchn()
-        log.debug(">UsbifBackendController>connectInterface> connecting usbif 
to event channel %s ports=%d:%d",
-                  str(self),
-                  self.getEventChannelBackend(),
-                  self.getEventChannelFrontend())
-        msg = packMsg('usbif_be_connect_t',
-                      { 'domid'        : self.frontendDomain,
-                        'evtchn'       : self.getEventChannelBackend(),
-                        'shmem_frame'  : val['shmem_frame'],
-                        'bandwidth'    : 500 # XXX fix bandwidth!
-                        })
-        msg = self.backendChannel.requestResponse(msg)
-        self.respond_be_connect(msg)
-
-    def respond_be_connect(self, msg):
-        """Response handler for a be_connect message.
-
-        @param msg: message
-        @type  msg: xu message
-        """
-        val = unpackMsg('usbif_be_connect_t', msg)
-        log.debug('>UsbifBackendController>respond_be_connect> %s, %s', 
str(self), str(val))
-        self.send_fe_interface_status_changed()
-        log.debug(">UsbifBackendController> Successfully connected USB 
interface for domain %d" % self.frontendDomain)
-        self.controller.claim_ports()
-            
-    def send_fe_interface_status_changed(self):
-        msg = packMsg('usbif_fe_interface_status_changed_t',
-                      { 'status'    : USBIF_INTERFACE_STATUS_CONNECTED,
-                        'domid'     : self.backendDomain,
-                        'evtchn'    : self.getEventChannelFrontend(),
-                        'bandwidth' : 500,
-                        'num_ports' : len(self.controller.devices)
-                        })
-        self.frontendChannel.writeRequest(msg)
-
     def interfaceChanged(self):
-        self.send_fe_interface_status_changed()
+        pass
 
 
 class UsbDev(Dev):
@@ -153,17 +63,12 @@
         self.port = id
         self.path = None
         self.frontendDomain = self.getDomain()
-        self.frontendChannel = None
         self.backendDomain = 0
-        self.backendChannel = None
         self.configure(self.config, recreate=recreate)
 
     def init(self, recreate=False, reboot=False):
         self.destroyed = False
         self.frontendDomain = self.getDomain()
-        self.frontendChannel = self.getChannel()
-        backend = self.getBackend()
-        self.backendChannel = backend.backendChannel
         
     def configure(self, config, change=False, recreate=False):
         if change:
@@ -204,7 +109,6 @@
         """
         self.destroyed = True
         log.debug("Destroying usb domain=%d id=%s", self.frontendDomain, 
self.id)
-        self.send_be_release_port()
         if change:
             self.interfaceChanged()
 
@@ -220,27 +124,6 @@
         """
         self.getBackend().connect()
 
-    def send_be_claim_port(self):
-        log.debug(">UsbifBackendController>send_be_claim_port> about to claim 
port %s" % self.path)
-        msg = packMsg('usbif_be_claim_port_t',
-                      { 'domid'        : self.frontendDomain,
-                        'path'         : self.path,
-                        'usbif_port'   : self.port,
-                        'status'       : 0})
-        self.backendChannel.writeRequest(msg)
-        log.debug(">UsbifBackendController> Claim port completed")
-        # No need to add any callbacks, since the guest polls its virtual ports
-        # anyhow, somewhat like a UHCI controller ;-)
-
-    def send_be_release_port(self):
-        msg = packMsg('usbif_be_release_port_t',
-                      { 'domid'        : self.frontendDomain,
-                        'path'         : self.path })
-        self.backendChannel.writeRequest(msg)        
-        log.debug(">UsbifBackendController> Release port completed")
-        # No need to add any callbacks, since the guest polls its virtual ports
-        # anyhow, somewhat like a UHCI controller ;-)
-
 class UsbifController(DevController):
     """USB device interface controller. Handles all USB devices
     for a domain.
@@ -252,18 +135,9 @@
         DevController.__init__(self, vm, recreate=recreate)
         self.backends = {}
         self.backendId = 0
-        self.rcvr = None
 
     def init(self, recreate=False, reboot=False):
         self.destroyed = False
-        self.rcvr = CtrlMsgRcvr(self.getChannel())
-        self.rcvr.addHandler(CMSG_USBIF_FE,
-                             CMSG_USBIF_FE_DRIVER_STATUS_CHANGED,
-                             self.recv_fe_driver_status_changed)
-        self.rcvr.addHandler(CMSG_USBIF_FE,
-                             CMSG_USBIF_FE_INTERFACE_CONNECT,
-                             self.recv_fe_interface_connect)
-        self.rcvr.registerChannel()
         if reboot:
             self.rebootBackends()
             self.rebootDevices()
@@ -283,8 +157,6 @@
         log.debug("Destroying blkif domain=%d", self.getDomain())
         self.destroyDevices(reboot=reboot)
         self.destroyBackends(reboot=reboot)
-        if self.rcvr:
-            self.rcvr.deregisterChannel()
 
     def rebootBackends(self):
         for backend in self.backends.values():
@@ -311,40 +183,3 @@
     def destroyBackends(self, reboot=False):
         for backend in self.backends.values():
             backend.destroy(reboot=reboot)
-
-    def recv_fe_driver_status_changed(self, msg):
-        val = unpackMsg('usbif_fe_driver_status_changed_t', msg)
-        log.debug('>UsbifController>recv_fe_driver_status_changed> %s', 
str(val))
-        #todo: FIXME: For each backend?
-        msg = packMsg('usbif_fe_interface_status_changed_t',
-                      { 'status' : USBIF_INTERFACE_STATUS_DISCONNECTED,
-                        'domid'  : 0, #todo: FIXME: should be domid of backend
-                        'evtchn' : 0 })
-        msg = self.getChannel().requestResponse(msg)
-        self.disconnected_resp(msg)
-
-    def disconnected_resp(self, msg):
-        val = unpackMsg('usbif_fe_interface_status_changed_t', msg)
-        if val['status'] != USBIF_INTERFACE_STATUS_DISCONNECTED:
-            log.error(">UsbifController>disconnected_resp> unexpected status 
change")
-        else:
-            log.debug(">UsbifController>disconnected_resp> interface 
disconnected OK")
-
-    def recv_fe_interface_connect(self, msg):
-        val = unpackMsg('usbif_fe_interface_status_changed_t', msg)
-        log.debug(">UsbifController>recv_fe_interface_connect> notifying 
backend")
-        #todo: FIXME: generalise to more than one backend.
-        id = 0
-        backend = self.getBackendById(id)
-        if backend:
-            try:
-                backend.connectInterface(val)
-            except IOError, ex:
-                log.error("Exception connecting backend: %s", ex)
-        else:
-            log.error('interface connect on unknown interface: id=%d', id)
-
-    def claim_ports(self):
-        for dev in self.devices.values():
-            dev.send_be_claim_port()
-
diff -r 549f4256ab3c -r 0e2b1e04d4cb tools/python/xen/xend/server/messages.py
--- a/tools/python/xen/xend/server/messages.py  Wed Sep  7 17:43:56 2005
+++ /dev/null   Wed Sep  7 18:28:04 2005
@@ -1,462 +0,0 @@
-#============================================================================
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of version 2.1 of the GNU Lesser General Public
-# License as published by the Free Software Foundation.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-#============================================================================
-# Copyright (C) 2004, 2005 Mike Wray <mike.wray@xxxxxx>
-#============================================================================
-
-import sys
-import struct
-import types
-
-from xen.lowlevel import xu
-
-DEBUG = False
-
-#PORT_WILDCARD = 0xefffffff
-
-"""Wildcard for the control message types."""
-TYPE_WILDCARD = 0xffff
-
-""" All message formats.
-Added to incrementally for the various message types.
-See below.
-"""
-msg_formats = {}
-
-#============================================================================
-# Block interface message types.
-#============================================================================
-
-CMSG_BLKIF_BE = 1
-CMSG_BLKIF_FE = 2
-
-CMSG_BLKIF_FE_INTERFACE_STATUS      =  0
-CMSG_BLKIF_FE_DRIVER_STATUS         = 32
-CMSG_BLKIF_FE_INTERFACE_CONNECT     = 33
-CMSG_BLKIF_FE_INTERFACE_DISCONNECT  = 34
-CMSG_BLKIF_FE_INTERFACE_QUERY       = 35
-
-CMSG_BLKIF_BE_CREATE                =  0
-CMSG_BLKIF_BE_DESTROY               =  1
-CMSG_BLKIF_BE_CONNECT               =  2
-CMSG_BLKIF_BE_DISCONNECT            =  3
-CMSG_BLKIF_BE_VBD_CREATE            =  4
-CMSG_BLKIF_BE_VBD_DESTROY           =  5
-CMSG_BLKIF_BE_DRIVER_STATUS         = 32
-
-BLKIF_DRIVER_STATUS_DOWN            =  0
-BLKIF_DRIVER_STATUS_UP              =  1
-
-BLKIF_INTERFACE_STATUS_CLOSED       =  0 #/* Interface doesn't exist.    */
-BLKIF_INTERFACE_STATUS_DISCONNECTED =  1 #/* Exists but is disconnected. */
-BLKIF_INTERFACE_STATUS_CONNECTED    =  2 #/* Exists and is connected.    */
-BLKIF_INTERFACE_STATUS_CHANGED      =  3 #/* A device has been added or 
removed. */
-
-BLKIF_BE_STATUS_OKAY                =  0
-BLKIF_BE_STATUS_ERROR               =  1
-BLKIF_BE_STATUS_INTERFACE_EXISTS    =  2
-BLKIF_BE_STATUS_INTERFACE_NOT_FOUND =  3
-BLKIF_BE_STATUS_INTERFACE_CONNECTED =  4
-BLKIF_BE_STATUS_VBD_EXISTS          =  5
-BLKIF_BE_STATUS_VBD_NOT_FOUND       =  6
-BLKIF_BE_STATUS_OUT_OF_MEMORY       =  7
-BLKIF_BE_STATUS_PHYSDEV_NOT_FOUND   =  8
-BLKIF_BE_STATUS_MAPPING_ERROR       =  9
-
-blkif_formats = {
-    'blkif_be_connect_t':
-    (CMSG_BLKIF_BE, CMSG_BLKIF_BE_CONNECT),
-    # Connect be to fe (in response to blkif_fe_interface_connect_t).
-
-    'blkif_be_create_t':
-    (CMSG_BLKIF_BE, CMSG_BLKIF_BE_CREATE),
-    # Create be.
-
-    'blkif_be_disconnect_t':
-    (CMSG_BLKIF_BE, CMSG_BLKIF_BE_DISCONNECT),
-    # Disconnect be from fe.
-
-    'blkif_be_destroy_t':
-    (CMSG_BLKIF_BE, CMSG_BLKIF_BE_DESTROY),
-    # Destroy be (after disconnect).
-    # Make be do this even if no disconnect (and destroy all vbd too).
-
-    'blkif_be_vbd_create_t':
-    (CMSG_BLKIF_BE, CMSG_BLKIF_BE_VBD_CREATE),
-    # Create a vbd device.
-
-    'blkif_be_vbd_destroy_t':
-    (CMSG_BLKIF_BE, CMSG_BLKIF_BE_VBD_DESTROY),
-    # Destroy a vbd.
-
-    # Add message to query be for state and vbds.
-
-    'blkif_fe_interface_status_t':
-    (CMSG_BLKIF_FE, CMSG_BLKIF_FE_INTERFACE_STATUS),
-    # Notify device status to fe.
-    # Also used to notify 'any' device change with status 
BLKIF_INTERFACE_STATUS_CHANGED.
-
-    'blkif_fe_driver_status_t':
-    (CMSG_BLKIF_FE, CMSG_BLKIF_FE_DRIVER_STATUS),
-    # Comes from fe, treated as notifying that fe has come up/changed.
-    # Xend sets be(s) to BLKIF_INTERFACE_STATUS_DISCONNECTED,
-    # sends blkif_fe_interface_status_t to fe (from each be).
-    #
-    # Reply with i/f count.
-    # The i/f sends probes (using -ve trick), we reply with the info.
-
-    'blkif_fe_interface_connect_t':
-    (CMSG_BLKIF_FE, CMSG_BLKIF_FE_INTERFACE_CONNECT),
-    # Comes from fe, passing shmem frame to use for be.
-    # fe sends when gets blkif_fe_interface_status_t with state 
NETIF_INTERFACE_STATUS_DISCONNECTED.
-    # Xend creates event channel and notifies be.
-    # Then notifies fe of event channel with blkif_fe_interface_status_t.
-
-    # Add message to kick fe to probe for devices.
-    # Just report new devices to fe?
-
-    # 
-    # Add message for fe to probe a device.
-    # And probing with id -1 should return first.
-    # And probing with id -n should return first device with id > n.
-    
-    # Add message to query fe for state and vbds.
-}
-
-msg_formats.update(blkif_formats)
-
-#============================================================================
-# Network interface message types.
-#============================================================================
-
-CMSG_NETIF_BE = 3
-CMSG_NETIF_FE = 4
-
-CMSG_NETIF_FE_INTERFACE_STATUS      =  0
-CMSG_NETIF_FE_DRIVER_STATUS         = 32
-CMSG_NETIF_FE_INTERFACE_CONNECT     = 33
-CMSG_NETIF_FE_INTERFACE_DISCONNECT  = 34
-CMSG_NETIF_FE_INTERFACE_QUERY       = 35
-
-CMSG_NETIF_BE_CREATE                =  0
-CMSG_NETIF_BE_DESTROY               =  1
-CMSG_NETIF_BE_CONNECT               =  2
-CMSG_NETIF_BE_DISCONNECT            =  3
-CMSG_NETIF_BE_CREDITLIMIT           =  4
-CMSG_NETIF_BE_DRIVER_STATUS         = 32
-
-NETIF_INTERFACE_STATUS_CLOSED       =  0 #/* Interface doesn't exist.    */
-NETIF_INTERFACE_STATUS_DISCONNECTED =  1 #/* Exists but is disconnected. */
-NETIF_INTERFACE_STATUS_CONNECTED    =  2 #/* Exists and is connected.    */
-NETIF_INTERFACE_STATUS_CHANGED      =  3 #/* A device has been added or 
removed. */
-
-NETIF_DRIVER_STATUS_DOWN            =  0
-NETIF_DRIVER_STATUS_UP              =  1
-
-netif_formats = {
-    'netif_be_connect_t':
-    (CMSG_NETIF_BE, CMSG_NETIF_BE_CONNECT),
-
-    'netif_be_create_t':
-    (CMSG_NETIF_BE, CMSG_NETIF_BE_CREATE),
-
-    'netif_be_disconnect_t':
-    (CMSG_NETIF_BE, CMSG_NETIF_BE_DISCONNECT),
-
-    'netif_be_destroy_t':
-    (CMSG_NETIF_BE, CMSG_NETIF_BE_DESTROY),
-
-    'netif_be_creditlimit_t':
-    (CMSG_NETIF_BE, CMSG_NETIF_BE_CREDITLIMIT),
-
-    'netif_be_driver_status_t':
-    (CMSG_NETIF_BE, CMSG_NETIF_BE_DRIVER_STATUS),
-
-    'netif_fe_driver_status_t':
-    (CMSG_NETIF_FE, CMSG_NETIF_FE_DRIVER_STATUS),
-
-    'netif_fe_interface_connect_t':
-    (CMSG_NETIF_FE, CMSG_NETIF_FE_INTERFACE_CONNECT),
-
-    'netif_fe_interface_status_t':
-    (CMSG_NETIF_FE, CMSG_NETIF_FE_INTERFACE_STATUS),
-    }
-
-msg_formats.update(netif_formats)
-
-#============================================================================
-# USB interface message types.
-#============================================================================
-
-CMSG_USBIF_BE = 8
-CMSG_USBIF_FE = 9
-
-CMSG_USBIF_FE_INTERFACE_STATUS_CHANGED = 0
-
-CMSG_USBIF_FE_DRIVER_STATUS_CHANGED = 32
-CMSG_USBIF_FE_INTERFACE_CONNECT     = 33
-CMSG_USBIF_FE_INTERFACE_DISCONNECT  = 34
-
-USBIF_DRIVER_STATUS_DOWN = 0
-USBIF_DRIVER_STATUS_UP   = 1
-
-USBIF_INTERFACE_STATUS_DESTROYED    = 0 #/* Interface doesn't exist.    */
-USBIF_INTERFACE_STATUS_DISCONNECTED = 1 #/* Exists but is disconnected. */
-USBIF_INTERFACE_STATUS_CONNECTED    = 2 #/* Exists and is connected.    */
-
-CMSG_USBIF_BE_CREATE = 0
-CMSG_USBIF_BE_DESTROY = 1
-CMSG_USBIF_BE_CONNECT = 2
-
-CMSG_USBIF_BE_DISCONNECT = 3
-CMSG_USBIF_BE_CLAIM_PORT = 4
-CMSG_USBIF_BE_RELEASE_PORT = 5
-
-CMSG_USBIF_BE_DRIVER_STATUS_CHANGED = 32
-
-USBIF_BE_STATUS_OKAY = 0
-USBIF_BE_STATUS_ERROR = 1
-
-USBIF_BE_STATUS_INTERFACE_EXISTS = 2
-USBIF_BE_STATUS_INTERFACE_NOT_FOUND = 3
-USBIF_BE_STATUS_INTERFACE_CONNECTED = 4
-USBIF_BE_STATUS_OUT_OF_MEMORY = 7
-USBIF_BE_STATUS_MAPPING_ERROR = 9
-
-usbif_formats = {
-    'usbif_be_create_t':
-    (CMSG_USBIF_BE, CMSG_USBIF_BE_CREATE),
-
-    'usbif_be_destroy_t':
-    (CMSG_USBIF_BE, CMSG_USBIF_BE_DESTROY),
-
-    'usbif_be_connect_t':
-    (CMSG_USBIF_BE, CMSG_USBIF_BE_CONNECT),
-
-    'usbif_be_disconnect_t':
-    (CMSG_USBIF_BE, CMSG_USBIF_BE_DISCONNECT),
-
-    'usbif_be_claim_port_t':
-    (CMSG_USBIF_BE, CMSG_USBIF_BE_CLAIM_PORT),
-
-    'usbif_be_release_port_t':
-    (CMSG_USBIF_BE, CMSG_USBIF_BE_RELEASE_PORT),
-
-    'usbif_fe_interface_status_changed_t':
-    (CMSG_USBIF_FE, CMSG_USBIF_FE_INTERFACE_STATUS_CHANGED),
-
-    'usbif_fe_driver_status_changed_t':
-    (CMSG_USBIF_FE, CMSG_USBIF_FE_DRIVER_STATUS_CHANGED),
-
-    'usbif_fe_interface_connect_t':
-    (CMSG_USBIF_FE, CMSG_USBIF_FE_INTERFACE_CONNECT),
-
-    'usbif_fe_interface_disconnect_t':
-    (CMSG_USBIF_FE, CMSG_USBIF_FE_INTERFACE_DISCONNECT),
-   
-    }
-    
-msg_formats.update(usbif_formats)
-
-#============================================================================
-# Domain shutdown message types.
-#============================================================================
-
-CMSG_SHUTDOWN = 6
-
-CMSG_SHUTDOWN_POWEROFF  = 0
-CMSG_SHUTDOWN_REBOOT    = 1
-CMSG_SHUTDOWN_SUSPEND   = 2
-CMSG_SHUTDOWN_SYSRQ     = 3
-
-STOPCODE_shutdown       = 0
-STOPCODE_reboot         = 1
-STOPCODE_suspend        = 2
-STOPCODE_sysrq          = 3
-
-shutdown_formats = {
-    'shutdown_poweroff_t':
-    (CMSG_SHUTDOWN, CMSG_SHUTDOWN_POWEROFF),
-    
-    'shutdown_reboot_t':
-    (CMSG_SHUTDOWN, CMSG_SHUTDOWN_REBOOT),
-
-    'shutdown_suspend_t':
-    (CMSG_SHUTDOWN, CMSG_SHUTDOWN_SUSPEND),
-    
-    'shutdown_sysrq_t':
-    (CMSG_SHUTDOWN, CMSG_SHUTDOWN_SYSRQ)
-    }
-
-msg_formats.update(shutdown_formats)
-
-#============================================================================
-# Domain memory reservation message.
-#============================================================================
-
-CMSG_MEM_REQUEST = 7
-CMSG_MEM_REQUEST_SET = 0
-
-mem_request_formats = {
-    'mem_request_t':
-    (CMSG_MEM_REQUEST, CMSG_MEM_REQUEST_SET)
-    }
-
-msg_formats.update(mem_request_formats)
-
-#============================================================================
-# Domain vcpu hotplug message.
-#============================================================================
-
-CMSG_VCPU_HOTPLUG     = 10
-CMSG_VCPU_HOTPLUG_OFF = 0
-CMSG_VCPU_HOTPLUG_ON  = 1
-
-vcpu_hotplug_formats = {
-    'vcpu_hotplug_off_t':
-    (CMSG_VCPU_HOTPLUG, CMSG_VCPU_HOTPLUG_OFF),
-
-    'vcpu_hotplug_on_t':
-    (CMSG_VCPU_HOTPLUG, CMSG_VCPU_HOTPLUG_ON)
-    }
-
-msg_formats.update(vcpu_hotplug_formats)
-
-#============================================================================
-class Msg:
-    pass
-
-_next_msgid = 0
-
-def nextid():
-    """Generate the next message id.
-
-    @return: message id
-    @rtype: int
-    """
-    global _next_msgid
-    _next_msgid += 1
-    return _next_msgid
-
-def packMsg(ty, params):
-    """Pack a message.
-    Any I{mac} parameter is passed in as an int[6] array and converted.
-
-    @param ty: message type name
-    @type ty: string
-    @param params: message parameters
-    @type params: dicy
-    @return: message
-    @rtype: xu message
-    """
-    msgid = nextid()
-    if DEBUG: print '>packMsg', msgid, ty, params
-    (major, minor) = msg_formats[ty]
-    args = {}
-    for (k, v) in params.items():
-        if k in ['mac', 'be_mac']:
-            for i in range(0, 6):
-                args['%s[%d]' % (k, i)] = v[i]
-        else:
-            args[k] = v
-    msg = xu.message(major, minor, msgid, args)
-    if DEBUG: print '<packMsg', msg.get_header()['id'], ty, args
-    return msg
-
-def unpackMsg(ty, msg):
-    """Unpack a message.
-    Any mac addresses in the message are converted to int[6] array
-    in the return dict.
-
-    @param ty:  message type
-    @type ty: string
-    @param msg: message
-    @type msg: xu message
-    @return: parameters
-    @rtype: dict
-    """
-    args = msg.get_payload()
-    if DEBUG: print '>unpackMsg', args
-    if isinstance(args, types.StringType):
-        args = {'value': args}
-    else:
-        mac = [0, 0, 0, 0, 0, 0]
-        macs = []
-        for (k, v) in args.items():
-            if k.startswith('mac['):
-                macs.append(k)
-                i = int(k[4:5])
-                mac[i] = v
-            else:
-                pass
-        if macs:
-            args['mac'] = mac
-            #print 'macs=', macs
-            #print 'args=', args
-            for k in macs:
-                del args[k]
-    if DEBUG:
-        msgid = msg.get_header()['id']
-        print '<unpackMsg', msgid, ty, args
-    return args
-
-def msgTypeName(ty, subty):
-    """Convert a message type, subtype pair to a message type name.
-
-    @param ty: message type
-    @type ty: int
-    @param subty: message subtype
-    @type ty: int
-    @return: message type name (or None)
-    @rtype: string or None
-    """
-    for (name, info) in msg_formats.items():
-        if info[0] == ty and info[1] == subty:
-            return name
-    return None
-
-def printMsg(msg, out=sys.stdout, all=False):
-    """Print a message.
-
-    @param msg: message
-    @type msg: xu message
-    @param out: where to print to
-    @type out: stream
-    @param all: print payload if true
-    @type all: bool
-    """
-    hdr = msg.get_header()
-    major = hdr['type']
-    minor = hdr['subtype']
-    msgid = hdr['id']
-    ty = msgTypeName(major, minor)
-    print >>out, 'message:', 'type=', ty, '%d:%d' % (major, minor), 'id=%d' % 
msgid
-    if all:
-        print >>out, 'payload=', msg.get_payload()
-
-
-def getMessageType(msg):
-    """Get a 2-tuple of the message type and subtype.
-
-    @param msg: message
-    @type  msg: xu message
-    @return: type info
-    @rtype:  (int, int)
-    """
-    hdr = msg.get_header()
-    return (hdr['type'], hdr.get('subtype'))
-
-def getMessageId(msg):
-    hdr = msg.get_header()
-    return hdr['id']

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.