[roll] Roll fuchsia [driver_runtime] Add fdf_channel implementation. Also adds a barebones dispatcher implementation so the channel tests can work. It just calls the callback immediately without using an async loop or doing any reentrancy checking. The future dispatcher CL will add tests that exercise use of a global async loop. ----------------------- Channel API updates ----------------------- * For now we allow writing and reading empty messages (i.e. arena, data, and handles are all NULL). This is to match the zircon channel implementation which allows both data and handles to be NULL. We do require an arena when data / handles are not NULL. * Closing a handle also closes any handles in unread messages. * If a channel has a registered callback, and the channel is closed: - if the dispatcher is synchronized - cancels the callback - if the dispatcher is unsynchronized - callback will be called ----------------------- Channel implementation ----------------------- A channel is represented by a 2 fdf_channel objects which share a lock (stored in FdfChannelSharedState). When the client writes to a channel, we create a MessagePacket, which is queued to the opposite end's message queue. Reading will return the front of this message queue. The client may register a wait async, to be notified of when a message is available. Once we have pending messages and a pending wait async, we will register a callback request with the dispatcher, which will call the callback once ready Since we only allow one wait async at a time, and allow multiple reads per callback, we only ever have one callback request queued with the dispatcher at a time. When we get the callback from the dispatcher, we clear the channel's stored wait async registration before calling the client's callback, so the client's re-registration of wait async will succeed. Original-Bug: 85577 Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/595645 Original-Revision: 84729121083bf7aa263dfef70c2b769b119e07ca GitOrigin-RevId: bbaffce142a0bf8e99f6b4dce43ffe1a4cd9b46e Change-Id: Iaca8d841386e59e1f4aab6ae0f31930924990413
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.