/* SPDX-License-Identifier: BSD-3-Clause */ /* Copyright (c) 2026 Open-IOV contributors */ /* rmtool.h - internal shared declarations for rmtool commands and output. */ #ifndef RMTOOL_H #define RMTOOL_H #include #include #include "rm_api.h" #define RMTOOL_VERSION "0.1.0" enum rm_format { RM_FMT_TABLE = 0, RM_FMT_JSON, RM_FMT_CSV, }; struct rm_kv { const char *key; const char *value; }; struct rm_ctx { int gpu_minor; /* -1 = first/default GPU */ const char *dev_path; /* NULL = /dev/nvidiactl */ enum rm_format format; struct rm_client rm; int have_rm; }; /* output.c */ enum rm_format rm_format_parse(const char *name); const char *rm_human_kib(NvU64 kib, char *buf, size_t len); void rm_print_kv(const char *title, const struct rm_kv *kv, int n, enum rm_format format); void rm_print_table(const char *title, const char *const *headers, const char *cells, size_t stride, int rows, int cols, enum rm_format format); void rm_hexdump(const void *data, size_t len); /* query.c */ int rm_ctx_open(struct rm_ctx *ctx); int rm_apply_common_opt(struct rm_ctx *ctx, int opt, const char *arg); NvU32 rm_query_name(struct rm_ctx *ctx, char *buf, size_t len); NvU32 rm_query_mc_arch(struct rm_ctx *ctx, NV2080_CTRL_MC_ARCH_INFO_PARAMS *p); NvU32 rm_query_pci(struct rm_ctx *ctx, NV2080_CTRL_BUS_GET_PCI_INFO_PARAMS *p); NvU32 rm_query_fb(struct rm_ctx *ctx, const NvU32 *indices, NvU32 *values, NvU32 n); NvU32 rm_query_engines(struct rm_ctx *ctx, NV2080_CTRL_GPU_GET_ENGINES_V2_PARAMS *p); NvU32 rm_query_fifo_table(struct rm_ctx *ctx, NV2080_FIFO_DEVICE_ENTRY *entries, NvU32 max_entries, NvU32 *n_entries); const char *rm_arch_str(NvU32 architecture); const char *rm_engine_type_name(NvU32 engine_type); const char *rm_engine_name(const NV2080_FIFO_DEVICE_ENTRY *entries, NvU32 n_entries, NvU32 engine_type); /* gpu.c */ int cmd_gpu(int argc, char **argv, struct rm_ctx *ctx); /* engine.c */ int cmd_engine(int argc, char **argv, struct rm_ctx *ctx); /* mem.c */ int cmd_mem(int argc, char **argv, struct rm_ctx *ctx); /* nv2080.c (includes sample) */ int cmd_nv2080(int argc, char **argv, struct rm_ctx *ctx); int cmd_sample(int argc, char **argv, struct rm_ctx *ctx); #endif /* RMTOOL_H */