[roll] Roll fuchsia [driver_runtime] Fix reset flakes.

Occasionally we would get flakes where Dispatcher::Reset() would fail
due to the drivers_ map not being empty. This is as it's legal to
call Dispatcher::Destroy() from the dispatcher shutdown callback,
and in that case we did not remove the Driver from the drivers_ map
until the runtime function (NotifyShutdown) handling the callback had
returned.

Instead the Driver object is now a RefPtr, which allows us to remove
it from the drivers_ map immediately once all dispatchers are destroyed.
The NotifyShutdown function also holds their only copy of the RefPtr.

This means when notifying for all driver destroyed, we need to track and
ensure all such NotifyShutdown functions have returned.

We also track how many threads are currently calling dispatcher shutdown
observer handlers for each driver, so we can ensure we only call the
driver shutdown observer once all these handlers have returned.
This should fix the ConcurrentDispatcherDestroy test.

Multiply: fuchsia-pkg://fuchsia.com/driver_runtime_tests#meta/driver_runtime_tests.cm : 50

Original-Bug: 127698, 120214

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/865485
Original-Revision: 2f58de1c23f79339f1085b11e0205db41beeebae
GitOrigin-RevId: 37999c406b0be8e16e53146ea6c4dbbcf2e834aa
Change-Id: Iab44544bac139455cc1b85c47791b4259a6ed5fd
1 file changed
tree: 86993fd0f6c45d9f58684abdac8f2797788ac8b9
  1. git-hooks/
  2. infra/
  3. third_party/
  4. cts
  5. firmware
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
  14. toolchain
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 via the IRC channel #fuchsia on Freenode.

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.