libxnvme_cli.h#

Enums#

xnvme_cli_opt#

enum xnvme_cli_opt#

Command-Line Options, each command-line option can be one of xnvme_cli_opt_type.

Values:

enumerator XNVME_CLI_OPT_NONE#

XNVME_CLI_OPT_NONE.

enumerator XNVME_CLI_OPT_CDW00#

XNVME_CLI_OPT_CDW00.

enumerator XNVME_CLI_OPT_CDW01#

XNVME_CLI_OPT_CDW01.

enumerator XNVME_CLI_OPT_CDW02#

XNVME_CLI_OPT_CDW02.

enumerator XNVME_CLI_OPT_CDW03#

XNVME_CLI_OPT_CDW03.

enumerator XNVME_CLI_OPT_CDW04#

XNVME_CLI_OPT_CDW04.

enumerator XNVME_CLI_OPT_CDW05#

XNVME_CLI_OPT_CDW05.

enumerator XNVME_CLI_OPT_CDW06#

XNVME_CLI_OPT_CDW06.

enumerator XNVME_CLI_OPT_CDW07#

XNVME_CLI_OPT_CDW07.

enumerator XNVME_CLI_OPT_CDW08#

XNVME_CLI_OPT_CDW08.

enumerator XNVME_CLI_OPT_CDW09#

XNVME_CLI_OPT_CDW09.

enumerator XNVME_CLI_OPT_CDW10#

XNVME_CLI_OPT_CDW10.

enumerator XNVME_CLI_OPT_CDW11#

XNVME_CLI_OPT_CDW11.

enumerator XNVME_CLI_OPT_CDW12#

XNVME_CLI_OPT_CDW12.

enumerator XNVME_CLI_OPT_CDW13#

XNVME_CLI_OPT_CDW13.

enumerator XNVME_CLI_OPT_CDW14#

XNVME_CLI_OPT_CDW14.

enumerator XNVME_CLI_OPT_CDW15#

XNVME_CLI_OPT_CDW15.

enumerator XNVME_CLI_OPT_CMD_INPUT#

XNVME_CLI_OPT_CMD_INPUT.

enumerator XNVME_CLI_OPT_CMD_OUTPUT#

XNVME_CLI_OPT_CMD_OUTPUT.

enumerator XNVME_CLI_OPT_DATA_NBYTES#

XNVME_CLI_OPT_DATA_NBYTES.

enumerator XNVME_CLI_OPT_DATA_INPUT#

XNVME_CLI_OPT_DATA_INPUT.

enumerator XNVME_CLI_OPT_DATA_OUTPUT#

XNVME_CLI_OPT_DATA_OUTPUT.

enumerator XNVME_CLI_OPT_META_NBYTES#

XNVME_CLI_OPT_META_NBYTES.

enumerator XNVME_CLI_OPT_META_INPUT#

XNVME_CLI_OPT_META_INPUT.

enumerator XNVME_CLI_OPT_META_OUTPUT#

XNVME_CLI_OPT_META_OUTPUT.

enumerator XNVME_CLI_OPT_LBAFL#

XNVME_CLI_OPT_LBAFL.

enumerator XNVME_CLI_OPT_SLBA#

XNVME_CLI_OPT_SLBA.

enumerator XNVME_CLI_OPT_ELBA#

XNVME_CLI_OPT_ELBA.

enumerator XNVME_CLI_OPT_LBA#

XNVME_CLI_OPT_LBA.

enumerator XNVME_CLI_OPT_NLB#

XNVME_CLI_OPT_NLB.

enumerator XNVME_CLI_OPT_URI#

XNVME_CLI_OPT_URI.

enumerator XNVME_CLI_OPT_SYS_URI#

XNVME_CLI_OPT_SYS_URI.

enumerator XNVME_CLI_OPT_UUID#

XNVME_CLI_OPT_UUID.

enumerator XNVME_CLI_OPT_NSID#

XNVME_CLI_OPT_NSID.

enumerator XNVME_CLI_OPT_CNS#

XNVME_CLI_OPT_CNS.

enumerator XNVME_CLI_OPT_CSI#

XNVME_CLI_OPT_CSI.

enumerator XNVME_CLI_OPT_INDEX#

XNVME_CLI_OPT_INDEX.

enumerator XNVME_CLI_OPT_SETID#

XNVME_CLI_OPT_SETID.

enumerator XNVME_CLI_OPT_CNTID#

XNVME_CLI_OPT_CNTID.

enumerator XNVME_CLI_OPT_LID#

XNVME_CLI_OPT_LID.

enumerator XNVME_CLI_OPT_LSP#

XNVME_CLI_OPT_LSP.

enumerator XNVME_CLI_OPT_LPO_NBYTES#

XNVME_CLI_OPT_LPO_NBYTES.

enumerator XNVME_CLI_OPT_RAE#

XNVME_CLI_OPT_RAE.

enumerator XNVME_CLI_OPT_CLEAR#

XNVME_CLI_OPT_CLEAR.

enumerator XNVME_CLI_OPT_LBAFU#

XNVME_CLI_OPT_LBAFU.

enumerator XNVME_CLI_OPT_SES#

XNVME_CLI_OPT_SES.

enumerator XNVME_CLI_OPT_SEL#

XNVME_CLI_OPT_SEL.

enumerator XNVME_CLI_OPT_MSET#

XNVME_CLI_OPT_MSET.

enumerator XNVME_CLI_OPT_AUSE#

XNVME_CLI_OPT_AUSE.

enumerator XNVME_CLI_OPT_OVRPAT#

XNVME_CLI_OPT_OVRPAT.

enumerator XNVME_CLI_OPT_OWPASS#

XNVME_CLI_OPT_OWPASS.

enumerator XNVME_CLI_OPT_OIPBP#

XNVME_CLI_OPT_OIPBP.

enumerator XNVME_CLI_OPT_NODAS#

XNVME_CLI_OPT_NODAS.

enumerator XNVME_CLI_OPT_SANACT#

XNVME_CLI_OPT_SANACT.

enumerator XNVME_CLI_OPT_ZSA#

XNVME_CLI_OPT_ZSA.

enumerator XNVME_CLI_OPT_PI#

XNVME_CLI_OPT_PI.

enumerator XNVME_CLI_OPT_PIL#

XNVME_CLI_OPT_PIL.

enumerator XNVME_CLI_OPT_FID#

XNVME_CLI_OPT_FID.

enumerator XNVME_CLI_OPT_FEAT#

XNVME_CLI_OPT_FEAT.

enumerator XNVME_CLI_OPT_SEED#

XNVME_CLI_OPT_SEED.

enumerator XNVME_CLI_OPT_LIMIT#

XNVME_CLI_OPT_LIMIT.

enumerator XNVME_CLI_OPT_IOSIZE#

XNVME_CLI_OPT_IOSIZE.

enumerator XNVME_CLI_OPT_QDEPTH#

XNVME_CLI_OPT_QDEPTH.

enumerator XNVME_CLI_OPT_DIRECT#

XNVME_CLI_OPT_DIRECT.

enumerator XNVME_CLI_OPT_STATUS#

XNVME_CLI_OPT_STATUS.

enumerator XNVME_CLI_OPT_SAVE#

XNVME_CLI_OPT_SAVE.

enumerator XNVME_CLI_OPT_RESET#

XNVME_CLI_OPT_RESET.

enumerator XNVME_CLI_OPT_VERBOSE#

XNVME_CLI_OPT_VERBOSE.

enumerator XNVME_CLI_OPT_HELP#

XNVME_CLI_OPT_HELP.

enumerator XNVME_CLI_OPT_COUNT#

XNVME_CLI_OPT_COUNT.

enumerator XNVME_CLI_OPT_OFFSET#

XNVME_CLI_OPT_OFFSET.

enumerator XNVME_CLI_OPT_OPCODE#

XNVME_CLI_OPT_OPCODE.

enumerator XNVME_CLI_OPT_FLAGS#

XNVME_CLI_OPT_FLAGS.

enumerator XNVME_CLI_OPT_ALL#

XNVME_CLI_OPT_ALL.

enumerator XNVME_CLI_OPT_BE#

XNVME_CLI_OPT_BE.

enumerator XNVME_CLI_OPT_MEM#

XNVME_CLI_OPT_MEM.

enumerator XNVME_CLI_OPT_SYNC#

XNVME_CLI_OPT_SYNC.

enumerator XNVME_CLI_OPT_ASYNC#

XNVME_CLI_OPT_ASYNC.

enumerator XNVME_CLI_OPT_ADMIN#

XNVME_CLI_OPT_ADMIN.

enumerator XNVME_CLI_OPT_SHM_ID#

XNVME_CLI_OPT_SHM_ID.

enumerator XNVME_CLI_OPT_MAIN_CORE#

XNVME_CLI_OPT_MAIN_CORE.

enumerator XNVME_CLI_OPT_CORE_MASK#

XNVME_CLI_OPT_CORE_MASK.

enumerator XNVME_CLI_OPT_USE_CMB_SQS#

XNVME_CLI_OPT_USE_CMB_SQS.

enumerator XNVME_CLI_OPT_CSS#

XNVME_CLI_OPT_CSS.

enumerator XNVME_CLI_OPT_POLL_IO#

XNVME_CLI_OPT_POLL_IO.

enumerator XNVME_CLI_OPT_POLL_SQ#

XNVME_CLI_OPT_POLL_SQ.

enumerator XNVME_CLI_OPT_REGISTER_FILES#

XNVME_CLI_OPT_REGISTER_FILES.

enumerator XNVME_CLI_OPT_REGISTER_BUFFERS#

XNVME_CLI_OPT_REGISTER_BUFFERS.

enumerator XNVME_CLI_OPT_TRUNCATE#

XNVME_CLI_OPT_TRUNCATE.

enumerator XNVME_CLI_OPT_RDONLY#

XNVME_CLI_OPT_RDONLY.

enumerator XNVME_CLI_OPT_WRONLY#

XNVME_CLI_OPT_WRONLY.

enumerator XNVME_CLI_OPT_RDWR#

XNVME_CLI_OPT_RDWR.

enumerator XNVME_CLI_OPT_CREATE#

XNVME_CLI_OPT_CREATE.

enumerator XNVME_CLI_OPT_CREATE_MODE#

XNVME_CLI_OPT_CREATE_MODE.

enumerator XNVME_CLI_OPT_ADRFAM#

XNVME_CLI_OPT_ADRFAM.

enumerator XNVME_CLI_OPT_DEV_NSID#

XNVME_CLI_OPT_DEV_NSID.

enumerator XNVME_CLI_OPT_VEC_CNT#

XNVME_CLI_OPT_VEC_CNT.

enumerator XNVME_CLI_OPT_SUBNQN#

XNVME_OPT_SUBNQN.

enumerator XNVME_CLI_OPT_HOSTNQN#

XNVME_CLI_OPT_HOSTNQN.

enumerator XNVME_CLI_OPT_DTYPE#

XNVME_CLI_OPT_DTYPE.

enumerator XNVME_CLI_OPT_DSPEC#

XNVME_CLI_OPT_DSPEC.

enumerator XNVME_CLI_OPT_DOPER#

XNVME_CLI_OPT_DOPER.

enumerator XNVME_CLI_OPT_ENDIR#

XNVME_CLI_OPT_ENDIR.

enumerator XNVME_CLI_OPT_TGTDIR#

XNVME_CLI_OPT_TGTDIR.

enumerator XNVME_CLI_OPT_NSR#

XNVME_CLI_OPT_NSR.

enumerator XNVME_CLI_OPT_POSA_TITLE#

XNVME_CLI_OPT_POSA_TITLE.

enumerator XNVME_CLI_OPT_NON_POSA_TITLE#

XNVME_CLI_OPT_NON_POSA_TITLE.

enumerator XNVME_CLI_OPT_ORCH_TITLE#

XNVME_CLI_OPT_ORCH_TITLE.

enumerator XNVME_CLI_OPT_AD#

XNVME_CLI_OPT_AD.

enumerator XNVME_CLI_OPT_IDW#

XNVME_CLI_OPT_IDW.

enumerator XNVME_CLI_OPT_IDR#

XNVME_CLI_OPT_IDR.

enumerator XNVME_CLI_OPT_LLB#

XNVME_CLI_OPT_LLB.

enumerator XNVME_CLI_OPT_LSI#

XNVME_CLI_OPT_LSI.

enumerator XNVME_CLI_OPT_PID#

XNVME_CLI_OPT_PID.

enumerator XNVME_CLI_OPT_KV_KEY#

XNVME_CLI_OPT_KV_KEY.

enumerator XNVME_CLI_OPT_KV_VAL#

XNVME_CLI_OPT_KV_VAL.

enumerator XNVME_CLI_OPT_KV_STORE_UPDATE#

XNVME_CLI_OPT_KV_STORE_UPDATE.

enumerator XNVME_CLI_OPT_KV_STORE_ADD#

XNVME_CLI_OPT_KV_STORE_ADD.

enumerator XNVME_CLI_OPT_KV_STORE_COMPRESS#

XNVME_CLI_OPT_KV_STORE_COMPRESS.

enumerator XNVME_CLI_OPT_PRACT#

XNVME_CLI_OPT_PRACT.

enumerator XNVME_CLI_OPT_PRCHK#

XNVME_CLI_OPT_PRCHK.

enumerator XNVME_CLI_OPT_APPTAG#

XNVME_CLI_OPT_APPTAG.

enumerator XNVME_CLI_OPT_APPTAG_MASK#

XNVME_CLI_OPT_APPTAG_MASK.

enumerator XNVME_CLI_OPT_SDLBA#
enumerator XNVME_CLI_OPT_END#

XNVME_CLI_OPT_END.

xnvme_cli_opt_type#

enum xnvme_cli_opt_type#

XNVME_CLI_LFLG: .

/cli —verbose; always optional XNVME_CLI_LOPT: ./cli —arg 0x0; optionally provide a value XNVME_CLI_LREQ: ./cli —arg 0x0; require providing a value XNVME_CLI_POSA: ./cli arg1 arg2; required, ordered, and provides a value XNVME_CLI_SKIP: ; This argument is used for formatting etc.

Values:

enumerator XNVME_CLI_POSA#

XNVME_CLI_POSA.

enumerator XNVME_CLI_LFLG#

XNVME_CLI_LFLG.

enumerator XNVME_CLI_LOPT#

XNVME_CLI_LOPT.

enumerator XNVME_CLI_LREQ#

XNVME_CLI_LREQ.

enumerator XNVME_CLI_SKIP#

XNVME_CLI_SKIP.

xnvme_cli_opt_value_type#

enum xnvme_cli_opt_value_type#

Values:

enumerator XNVME_CLI_OPT_VTYPE_URI#
enumerator XNVME_CLI_OPT_VTYPE_NUM#
enumerator XNVME_CLI_OPT_VTYPE_HEX#
enumerator XNVME_CLI_OPT_VTYPE_FILE#
enumerator XNVME_CLI_OPT_VTYPE_STR#
enumerator XNVME_CLI_OPT_VTYPE_SKIP#

xnvme_cli_opts#

enum xnvme_cli_opts#

Values:

enumerator XNVME_CLI_INIT_NONE#
enumerator XNVME_CLI_INIT_DEV_OPEN#

Structs#

xnvme_cli#

struct xnvme_cli#

Public Members

const char *title#

Setup by user.

const char *descr_short#

Setup by user.

const char *descr_long#

Setup by user.

int nsubs#

Setup by user.

struct xnvme_cli_sub *subs#

Setup by user.

int (*ver_pr)(int)#

Setup by library if unset.

int argc#

Setup by library.

char **argv#

Setup by library.

struct xnvme_cli_args args#

Setup by library.

int given[XNVME_CLI_OPT_END]#

Setup by library.

struct xnvme_cli_sub *sub#

Setup by library.

struct xnvme_timer timer#

Used by xnvme_cli_timer_*.

xnvme_cli_args#

struct xnvme_cli_args#

Options are stored in an instance of this structure.

Public Members

struct xnvme_dev *dev#

Created.

const char *uri#
const char *sys_uri#
const char *subnqn#
const char *hostnqn#
const char *cmd_input#
const char *cmd_output#
size_t data_nbytes#
const char *data_input#
const char *data_output#
size_t meta_nbytes#
const char *meta_input#
const char *meta_output#
uint32_t cdw[16]#
uint64_t lbafl#
uint64_t lba#
uint32_t llb#
uint32_t nlb#
uint64_t slba#
uint64_t elba#
uint32_t uuid#
uint32_t nsid#
uint32_t dev_nsid#
uint32_t cns#
uint32_t csi#
uint64_t index#
uint32_t setid#
uint64_t cntid#
uint32_t lid#
uint32_t lsp#
uint64_t lpo_nbytes#
uint32_t rae#
bool clear#
uint32_t lbafu#
uint32_t ses#
uint32_t sel#
uint32_t mset#
bool ause#
uint32_t ovrpat#
uint32_t owpass#
bool oipbp#
bool nodas#
uint32_t sanact#
uint32_t zsa#
uint32_t pi#
uint32_t pil#
uint32_t fid#
uint32_t feat#
uint32_t seed#
uint32_t iosize#
uint32_t qdepth#
bool direct#
uint32_t limit#
uint64_t count#
uint64_t offset#
uint64_t opcode#
uint64_t flags#
bool all#
uint32_t status#
bool save#
uint32_t reset#
bool verbose#
uint32_t help#
const char *be#
const char *mem#
const char *sync#
const char *async#
const char *admin#
uint64_t shm_id#
uint32_t main_core#
const char *core_mask#
struct xnvme_opts_css css#

SPDK controller-setup: do command-set-selection.

uint32_t use_cmb_sqs#
const char *adrfam#
uint32_t poll_io#
uint32_t poll_sq#
uint32_t register_files#
uint32_t register_buffers#
uint32_t truncate#
uint32_t rdonly#
uint32_t wronly#
uint32_t rdwr#
uint32_t create#
uint32_t create_mode#
uint32_t nr#
bool ad#
bool idw#
bool idr#
uint32_t vec_cnt#
uint32_t dtype#
uint32_t dspec#
uint32_t doper#
uint32_t endir#
uint32_t tgtdir#
uint32_t nsr#
uint32_t lsi#
uint32_t pid#
const char *kv_key#
const char *kv_val#
bool kv_store_add#
bool kv_store_update#
bool kv_store_compress#
bool pract#
uint8_t prchk#
uint32_t apptag#
uint32_t apptag_mask#
uint64_t sdlba#

xnvme_cli_enumeration#

struct xnvme_cli_enumeration#

List of devices found on the system usable with xNVMe.

Public Members

uint32_t capacity#

Remaining unused entries.

uint32_t nentries#

Used entries.

struct xnvme_ident entries[]#

Device entries.

xnvme_cli_opt_attr#

struct xnvme_cli_opt_attr#

Public Members

enum xnvme_cli_opt opt#
enum xnvme_cli_opt_value_type vtype#
const char *name#
const char *descr#
char getoptval#

xnvme_cli_sub#

struct xnvme_cli_sub#

Filled by the user of libxnvmc, usually statically right above main.

Public Members

const char *name#

Short name of the sub-command.

const char *descr_short#

Short sub-command description.

const char *descr_long#

Long sub-command description.

xnvme_cli_subfunc command#

Function to execute.

Options to parse into args and pass onto func

struct xnvme_cli_sub_opt opts[XNVME_CLI_SUB_OPTS_LEN]#

xnvme_cli_sub_opt#

struct xnvme_cli_sub_opt#

Public Members

enum xnvme_cli_opt opt#
enum xnvme_cli_opt_type type#

Functions#

xnvme_cli_args_pr#

void xnvme_cli_args_pr(struct xnvme_cli_args *args, int opts)#

xnvme_cli_enumeration_alloc#

int xnvme_cli_enumeration_alloc(struct xnvme_cli_enumeration **list, uint32_t capacity)#

xnvme_cli_enumeration_append#

int xnvme_cli_enumeration_append(struct xnvme_cli_enumeration *list, const struct xnvme_ident *entry)#

xnvme_cli_enumeration_fpp#

int xnvme_cli_enumeration_fpp(FILE *stream, struct xnvme_cli_enumeration *list, int opts)#

xnvme_cli_enumeration_fpr#

int xnvme_cli_enumeration_fpr(FILE *stream, struct xnvme_cli_enumeration *list, int opts)#

Prints the given xnvme_cli_enumeration to the given output stream.

Parameters:
  • stream – output stream used for printing

  • list – pointer to structure to print

  • opts – printer options, see xnvme_pr

Returns:

On success, the number of characters printed is returned.

xnvme_cli_enumeration_free#

void xnvme_cli_enumeration_free(struct xnvme_cli_enumeration *list)#

xnvme_cli_enumeration_pp#

int xnvme_cli_enumeration_pp(struct xnvme_cli_enumeration *list, int opts)#

xnvme_cli_enumeration_pr#

int xnvme_cli_enumeration_pr(struct xnvme_cli_enumeration *list, int opts)#

Prints the given xnvme_cli_enumeration to stdout.

Parameters:
  • list – pointer to structure to print

  • opts – printer options, see xnvme_pr

Returns:

On success, the number of characters printed is returned.

xnvme_cli_get_opt_attr#

const struct xnvme_cli_opt_attr *xnvme_cli_get_opt_attr(enum xnvme_cli_opt opt)#

xnvme_cli_perr#

void xnvme_cli_perr(const char *msg, int err)#

xnvme_cli_pinf#

void xnvme_cli_pinf(const char *format, ...)#

xnvme_cli_run#

int xnvme_cli_run(struct xnvme_cli *cli, int argc, char **argv, int opts)#

xnvme_cli_timer_bw_pr#

void xnvme_cli_timer_bw_pr(struct xnvme_cli *cli, const char *prefix, size_t nbytes)#

xnvme_cli_timer_start#

uint64_t xnvme_cli_timer_start(struct xnvme_cli *cli)#

xnvme_cli_timer_stop#

uint64_t xnvme_cli_timer_stop(struct xnvme_cli *cli)#

xnvme_cli_to_opts#

int xnvme_cli_to_opts(const struct xnvme_cli *cli, struct xnvme_opts *opts)#

Fill the given ‘opts’ with values parsed in the given ‘cli’.

Parameters:
  • cli – The command-line-interface to parse arguments for

  • opts – The device-options to fill

Returns:

On success, 0 is returned.