[roll] Roll fuchsia [fdio][zxio] Add zxio_shutdown and use for shutdown(2)

This adds a zxio operation for shutting down an object (usually a
socket) for read or write and updates the posix shutdown(2) entry point
to use it. This unifies some of the type management logic in fdio and
allows better sharing of logic in the future as other socket types move
to zxio. Most object types do not support this shutdown operation and
return an unsupported operation error.

This relates to RFC-099 which will replace all uses of the
zx_socket_shutdown() system call with zx_socket_set_disposition() by
moving the system call for pipe type sockets into zxio. This change does
not alter shutdown behavior - it's still using the zx_socket_shutdown()
syscall.

This also relates to https://fxbug.dev/78129 which changes the behavior
for StreamSockets to by default issue a FIDL call instead of directly
issuing a syscall. This changes the legacy mode for stream sockets to
implement the zxio shutdown operation by calling zxio_shutdown on the
zxio_pipe object embedded inside the StreamSocket. The regular shutdown
path for StreamSocket currently does not go through zxio and zxio does
not yet know how to issue the shutdown FIDL call for StreamSocket or
DatagramSocket. When we move more of the Stream/Datagram Socket behavior
into zxio, we'll also want to move the FIDL call into zxio behind the
shutdown zxio operation.

Original-Bug: 43267, 78129
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/544822
Original-Revision: 6532b75108b41eb5824f44aa0f273e229dc85649
GitOrigin-RevId: 1c5ff2bbbdba5a1f38b93a879348c7ddb198fa2e
Change-Id: I11c95f42ed550143c487ec7a924fba266432e8aa
1 file changed
tree: 2d2f82fa65ad60727c1270305499b54dee1a0b4f
  1. garnet/
  2. infra/
  3. peridot/
  4. third_party/
  5. topaz/
  6. zircon/
  7. firmware
  8. flower
  9. jiri.lock
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. 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 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.