[roll] Roll fuchsia [zircon][kernel] iovec support for channels

This CL implements the kernel side of RFC-0010. Please refer to that RFC
for higher-level questions regarding motivations and alternatives.

When the ZX_CHANNEL_WRITE_USE_IOVEC option is provided to the
zx_channel_{write,write_etc,call,call_etc} syscalls, the `bytes`
argument is reinterpreted as an array of zx_channel_iovec_t, which refer
to multiple userspace byte arrays that should be copied into the message
buffer.

The BufferChain is updated in this CL to support allocating more pages
than are needed and freeing the unused ones before sending the message.
This has the advantage of avoiding multiple allocations of pages in the
case where the size of the final buffer is initially unknown.

Original-Bug: 65677

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/448877
Original-Revision: f4858b82ce3240b52f910bb631b5c5876e3e9049
GitOrigin-RevId: 050e2da6982df64c143b577d5b199073c2d73a0e
Change-Id: I8b427d2567c0ae29048f4b8c343bdd53b14903b2
1 file changed
tree: 0f715bde21e2d477d64169a45086cae3d0ea6017
  1. garnet/
  2. infra/
  3. peridot/
  4. third_party/
  5. topaz/
  6. zircon/
  7. flower
  8. jiri.lock
  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 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.