| <!-- Generated by zircon/scripts/update-docs-from-fidl, do not edit! --> |
| # zx_debug_read |
| |
| ## Summary |
| |
| Read a message from the debug serial port. |
| |
| ## Declaration |
| |
| ```c |
| #include <zircon/syscalls.h> |
| |
| zx_status_t zx_debug_read(zx_handle_t handle, |
| char* buffer, |
| size_t buffer_size, |
| size_t* actual); |
| ``` |
| |
| ## Description |
| |
| `zx_debug_read()` attempts to read data from the debug serial port. |
| The parameter *buffer_size* is used to specify the byte size of the read buffer. |
| The length of *buffer*, in bytes, is stored in the location pointed to by |
| *actual*. |
| |
| This function will wait until at least one byte is available before it returns. |
| This can return up to *buffer_size* bytes. |
| |
| **NOTE:** There is only one buffer of the data that is coming from the debug |
| serial, and calling `zx_debug_read` consumes this data. If multiple programs are calling |
| this at once, they will each receive pieces of the data stream. |
| |
| To use the `zx_debug_read()` function, you must specify |
| `kernel.enable-serial-syscalls=true` on the kernel command line. Otherwise, |
| the function returns **ZX_ERR_NOT_SUPPORTED**. |
| |
| ## Rights |
| |
| *handle* must have resource kind **ZX_RSRC_KIND_ROOT**. |
| |
| ## Return value |
| |
| Returns **ZX_OK** on success. The location pointed to by *buffer* contains |
| *actual* bytes that were read. |
| |
| ## Errors |
| |
| **ZX_ERR_NOT_SUPPORTED** `kernel.enable-serial-syscalls` is not set to `true` |
| on the kernel command line. |
| |
| **ZX_ERR_INVALID_ARGS** *buffer* or *actual* are NULL. |
| |
| ## See also |
| |
| - [kernel command line] |
| - [`zx_debug_write()`] |
| - [`zx_debuglog_read()`] |
| - [`zx_debuglog_write()`] |
| |
| [kernel command line]: /docs/reference/kernel/kernel_cmdline.md |
| [`zx_debug_write()`]: debug_write.md |
| [`zx_debuglog_read()`]: debuglog_read.md |
| [`zx_debuglog_write()`]: debuglog_write.md |
| |