| # Stream | |
| ## NAME | |
| stream - A readable, writable, seekable interface to some underlying storage | |
| ## SYNOPSIS | |
| A stream is an interface for reading and writing data to some underlying | |
| storage, typically a VMO. | |
| ## DESCRIPTION | |
| A stream maintains a reference to some underlying storage, typically a VMO, | |
| as well as a seek offset, which is used to position read and write operations. | |
| Unlike the read and write operations on a VMO, the read and write operations | |
| on a stream can be short, which the operations can complete successfully | |
| without filling (or, respectively, emptying) the supplied buffers. For example, | |
| a read that extends beyond the end of a VMO will simply fail whereas a read | |
| that extends beyond the end of a stream will succeed in reading to the end of | |
| the stream and partially filling the buffer. | |
| Writes that extend beyond the end of the underlying storage attempt to increase | |
| the size of the underlying storage rather than failing immediately. For | |
| example, a write to a stream that extends beyond the end of the underlying VMO | |
| will attempt to resize the VMO rather than failing. If the resize operation | |
| fails on the underlying VMO, the write can end up being short. | |
| ## SYSCALLS | |
| - [`zx_stream_create()`] - create a stream from a VMO | |
| - [`zx_stream_readv()`] - read data from the stream at the current seek offset | |
| - [`zx_stream_readv_at()`] - read data from the stream at a given offset | |
| - [`zx_stream_writev()`] - write data to the stream at the current seek offset | |
| - [`zx_stream_writev_at()`] - write data to the stream at a given offset | |
| - [`zx_stream_seek()`] - modify the current seek offset of the stream | |
| [`zx_stream_create()`]: /docs/reference/syscalls/stream_create.md | |
| [`zx_stream_readv()`]: /docs/reference/syscalls/stream_readv.md | |
| [`zx_stream_readv_at()`]: /docs/reference/syscalls/stream_readv_at.md | |
| [`zx_stream_writev()`]: /docs/reference/syscalls/stream_writev.md | |
| [`zx_stream_writev_at()`]: /docs/reference/syscalls/stream_writev_at.md | |
| [`zx_stream_seek()`]: /docs/reference/syscalls/stream_seek.md |