[roll] Roll fuchsia [fidl][cpp] Make fidl::Client thread/sequence affine
{fidl,fdf}::{Wire}Client has the following semantics:
- You must bind it and destroy it on the same dispatcher
- The dispatcher must be single-threaded/synchronized
- You could make FIDL calls from arbitrary threads
The last bullet point is surprising: given a client
running on thread A, one could make a FIDL call from
thread B, but the response callback is still invoked from
thread A.
This behavior is especially surprising in the context of driver
dispatchers: a driver on dispatcher B could make a call on a client
running on dispatcher A. Then the driver B will later get called from
the wrong dispatcher, messing up internal state.
Fortunately it appears nothing on the system does these
cross-thread/cross-dispatcher calls on WireClient/Client. It seems
simpler to completely take out any multi-threading feature from the
non-shared clients.
After this CL, fidl::{Wire}Client has the following semantics:
- You must bind it and destroy it on the same dispatcher
- The dispatcher must be single-threaded
- You must make FIDL calls from the dispatcher thread
After this CL, fdf::{Wire}Client has the following semantics:
- You must bind it and destroy it on the same dispatcher
- The dispatcher must be synchronized
- You must make FIDL calls from tasks run on that synchronized
dispatcher
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/706828
Original-Revision: 2cb2c809fcb654ff861d5b838b7c548cf300fa21
GitOrigin-RevId: a64cad57b821222a5643e646f2a8d4c2785e518f
Change-Id: I464b163251040e86f85628eacacb36e000c41a25
This repository contains Fuchsia's Global Integration manifest files.
All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.
Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.
First install Jiri.
Next run:
$ jiri init $ jiri import minimal https://fuchsia.googlesource.com/integration $ jiri update
Third party projects should have their own subdirectory in ./third_party.