base,cpu,dev: Add a level of indirection for ListenSockets.
This makes room for there to be different implementations for different types of sockets. Change-Id: I8c959e2c3400caec8242e693e11330e072bc2c5f Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/69162 Reviewed-by: Yu-hsin Wang <yuhsingw@google.com> Tested-by: kokoro <noreply+kokoro@google.com> Maintainer: Gabe Black <gabe.black@gmail.com>
This commit is contained in:
@@ -245,11 +245,12 @@ class TapListener
|
||||
void accept();
|
||||
|
||||
protected:
|
||||
ListenSocket listener;
|
||||
ListenSocketPtr listener;
|
||||
EtherTapStub *tap;
|
||||
|
||||
public:
|
||||
TapListener(EtherTapStub *t, int p) : listener(t->name(), p), tap(t) {}
|
||||
TapListener(EtherTapStub *t, int p) :
|
||||
listener(listenSocketInetConfig(p).build(t->name())), tap(t) {}
|
||||
~TapListener() { delete event; }
|
||||
|
||||
void listen();
|
||||
@@ -258,9 +259,9 @@ class TapListener
|
||||
void
|
||||
TapListener::listen()
|
||||
{
|
||||
listener.listen();
|
||||
listener->listen();
|
||||
|
||||
event = new Event(this, listener.getfd(), POLLIN|POLLERR);
|
||||
event = new Event(this, listener->getfd(), POLLIN|POLLERR);
|
||||
pollQueue.schedule(event);
|
||||
}
|
||||
|
||||
@@ -272,10 +273,10 @@ TapListener::accept()
|
||||
// thread.
|
||||
EventQueue::ScopedMigration migrate(tap->eventQueue());
|
||||
|
||||
if (!listener.islistening())
|
||||
if (!listener->islistening())
|
||||
panic("TapListener(accept): cannot accept if we're not listening!");
|
||||
|
||||
int sfd = listener.accept();
|
||||
int sfd = listener->accept();
|
||||
if (sfd != -1)
|
||||
tap->attach(sfd);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user