## Summary

Write a message to the debug serial port.

## Declaration

    #include <zircon/syscalls.h>

    zx_status_t zx_debug_write(const char* buffer, size_t buffer_size);

## Description

`zx_debug_write()` attempts to write data of *buffer_size* bytes to the debug serial port.

To use the `zx_debug_write()` function, you must specify
`kernel.enable-serial-syscalls=true` or
`kernel.enable-serial-syscalls=output-only` on the kernel command line.
Otherwise, the function returns `ZX_ERR_NOT_SUPPORTED`.

`zx_debug_write` is intended for diagnostic use. Data may be dropped or
truncated, but the data from two different `zx_debug_write` calls will not be
interleaved or reordered.

If access to the debug serial port has been suspended (see
[`zx_debug_suspend()`](https://fuchsia.dev/reference/syscalls/debug_suspend)), `zx_debug_write()` blocks until it has been
resumed. A thread blocked in `zx_debug_write()` may be suspended or
killed.

## Rights

None.

## Return value

Returns `ZX_OK` on success.

## Errors

`ZX_ERR_NOT_SUPPORTED` `kernel.enable-serial-syscalls` is not set to `true`
or `output-only` on the kernel command line.

`ZX_ERR_INVALID_ARGS` *buffer* is NULL.

## See also

- [kernel command line](https://fuchsia.dev/docs/reference/kernel/kernel_cmdline)
- [`zx_debug_read()`](https://fuchsia.dev/reference/syscalls/debug_read)
- [`zx_debug_resume()`](https://fuchsia.dev/reference/syscalls/debug_resume)
- [`zx_debug_suspend()`](https://fuchsia.dev/reference/syscalls/debug_suspend)
- [`zx_debuglog_read()`](https://fuchsia.dev/reference/syscalls/debuglog_read)
- [`zx_debuglog_write()`](https://fuchsia.dev/reference/syscalls/debuglog_write)