c62ae124cc
The rpc(3) itself was not designed with multithreading in mind, but we can actually achieve some parallelism without modifying the library and the framework. This transport will allow to process RPCs in threads, with some hacks on the application side (documented in code). We make reentrable only one method - SVC_REPLY(). Reading and parsing of incoming calls is still done synchronously. But the actual processing of the calls can be offloaded to a thread, and once finished the thread can safely execute svc_sendreply() and the reply would be sent with the correct xid. Differential Revision: https://reviews.freebsd.org/D48569