circt icon indicating copy to clipboard operation
circt copied to clipboard

[ESI] RPCServer::registerReadPort provides no way to register callback port

Open mortbopet opened this issue 1 year ago • 1 comments

RegisterReadPort currently calls the default underlying connect() function, which forces a port to be a polling port. https://github.com/llvm/circt/blob/34c73c35c89588c84f695c6021f8c74ec6337d2d/lib/Dialect/ESI/runtime/cosim/lib/RpcServer.cpp#L170-L176

There should be some way of registering a callback port, i.e. by providing an optional callback argument to registerReadPort. e.g.:

ReadChannelPort & registerReadPort(const std::string &name, const std::string &type, std::function<bool(MessageData)> callback = nullptr);

mortbopet avatar Jun 26 '24 12:06 mortbopet

As part of making RpcServer "just" another backend, I'm planning on refactoring it into a Builder which produces an AcceleratorConnection.

teqdruid avatar Jun 26 '24 22:06 teqdruid