Page MenuHomeFreeBSD

rpc: limited multithread support for svc_nl
ClosedPublic

Authored by glebius on Mon, Jan 20, 9:13 PM.
Tags
None
Referenced Files
F109271514: D48569.diff
Sun, Feb 2, 9:07 PM
F109254018: D48569.diff
Sun, Feb 2, 4:11 PM
Unknown Object (File)
Sat, Feb 1, 7:14 PM
Unknown Object (File)
Sat, Feb 1, 3:58 PM
Unknown Object (File)
Sat, Feb 1, 3:56 PM
Unknown Object (File)
Fri, Jan 31, 8:10 AM
Unknown Object (File)
Thu, Jan 30, 1:29 AM
Unknown Object (File)
Mon, Jan 27, 10:11 PM
Subscribers

Details

Summary

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_REPLY() and the reply would be sent with the correct xid.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 61842
Build 58726: arc lint + arc unit

Event Timeline

Update with respect to committed changes and snl(3) as well as unstacked
changes to snl(3).

Looks ok to me but I do not know pthreads.

This revision was not accepted when it landed; it landed in state Needs Review.Sat, Feb 1, 9:04 AM
This revision was automatically updated to reflect the committed changes.