.. _sec-c-api: ######## C API ######## A brief overview of the C API provided by xNVMe follows. **xnvme** The :ref:`sec-c-api-xnvme` API is the foundational API of **xNVMe**, providing device enumeration, memory handling, asynchronous primitives and the fundamental command-interface for communicating with devices. The :ref:`sec-c-api-xnvme-header` is available for inspection in its raw form. **Block (NVM)** Building on top of the functionality of :ref:`sec-c-api-xnvme` then the :ref:`sec-c-api-xnvme_nvm` API provides helpers and structures specific to the NVMe command-set provided by NVM/Logical/Conventional Namespaces. That is the usual read/write, and optional commands such as the Simple-Copy-Command (SCC). The :ref:`sec-c-api-xnvme_nvm-header` is available for inspection in its raw form. **Zoned (ZNS)** Building on top of the functionality of :ref:`sec-c-api-xnvme` then the :ref:`sec-c-api-xnvme_znd` API provides helpers and structures specific to NVMe command-set provided by Zoned Namespaces. The :ref:`sec-c-api-xnvme_znd-header` is available for inspection in its raw form. **xnvme_cli** The :ref:`sec-c-api-xnvme_cli` API provides functionality to create command-line-interfaces for **xNVMe** related applications. The **xNVMe** examples, tools, and tests use the library to provide a coherent command-line interface with bash-completion-scripts and man-pages. The :ref:`sec-c-api-xnvme_cli-header` is available for inspection in its raw form. .. toctree:: :hidden: xnvme xnvme_ident xnvme_opts xnvme_file xnvme_cmd xnvme_adm xnvme_nvm xnvme_znd xnvme_lba xnvme_kvs xnvme_dev xnvme_geo xnvme_buf xnvme_mem xnvme_queue xnvme_spec xnvme_libconf xnvme_ver xnvme_cli