blob: dc9767cab93fd584640e0357fae252b9630c5696 [file] [log] [blame] [view]
# zx_debug_read
## NAME
<!-- Updated by update-docs-from-fidl, do not edit. -->
Read a message from the debug serial port.
## SYNOPSIS
<!-- Updated by update-docs-from-fidl, do not edit. -->
```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
<!-- Updated by update-docs-from-fidl, do not edit. -->
*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_cmdline.md`](/docs/reference/kernel/kernel_cmdline.md)
- [`zx_debug_write()`]
- [`zx_debuglog_read()`]
- [`zx_debuglog_write()`]
<!-- References updated by update-docs-from-fidl, do not edit. -->
[`zx_debug_write()`]: debug_write.md
[`zx_debuglog_read()`]: debuglog_read.md
[`zx_debuglog_write()`]: debuglog_write.md