blob: c6b8ad4463e18056e6073dac6f1a975ffab1a1aa [file] [log] [blame] [view]
<!-- 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