[roll] Roll fuchsia [roll] Roll third_party/pigweed pw_rpc: Add PW_RPC_LOCKLESS_CHANNEL_SEND

Removes requirement that Channel::Send hold pw_rpc global lock while
calling ChannelOutput::Send when dynamic allocation is enabled.

To prevent channels from being moved/added/deleted while sends are
going on, a global state LocklessSendState is introduced to track
active sends and pending channel modifications.

- ChannelBase::Send waits for pending modifications, increments
  active sends, releases the lock, calls output_->Send, re-acquires
  the lock, and decrements active sends.
- ChannelList modification methods (Add, Remove,
  SetDefaultChannelOutput) set the modification pending flag, wait for
  active sends to reach 0, and clear the flag when done.

Thread safety annotations are retained by using
PW_GUARDED_BY(rpc_lock()) for the new state.

Original-Original-Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/401273
Original-Original-Revision: 622d7a146925694121c81645dfb9661518f9a117

Original-Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1630929
Original-Original-Revision: 052a4feaa5bd81ea581c829ea038d0fd4a9e17e4
GitOrigin-RevId: d9e6d56d69b8e6563424b66d0c4e464ceca9fd3d
Change-Id: Ibbea99bab3ca17fcdd11d82c63a093a310f137f6
Reviewed-on: https://fuchsia-review.googlesource.com/c/integration/+/1631074
Cr-Commit-Position: refs/heads/main@{#193685}
1 file changed
tree: 2822f72025a03f1ceb8e578947b333fa5aa65453
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cobalt
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

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 in one of the communication channels documented at get involved.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.