/
githubmirror
/
nvme-cli
Обзор
Документация
Войти
/
githubmirror
/
nvme-cli
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
v3.0-a.3
libnvme/test/cpp.cc
76 строк
2 KB
Daniel Wagner
tree: remove nvme_scan
11 мар 2026, 19:06
11 мар 2026, 19:06
28e2142
Код
Авторство
О чём код?
// SPDX-License-Identifier: LGPL-2.1-or-later /** * This file is part of libnvme. * Copyright (c) 2020 Western Digital Corporation or its affiliates. * * Authors: Keith Busch <keith.busch@wdc.com> */ #include <iostream> #include <libnvme.h> int main() { struct nvme_global_ctx *ctx; nvme_host_t h; nvme_subsystem_t s; nvme_ctrl_t c; nvme_path_t p; nvme_ns_t n; int err; ctx = nvme_create_global_ctx(stdout, DEFAULT_LOGLEVEL); if (!ctx) return 1; err = nvme_scan_topology(ctx, NULL, NULL); if (err && !(err == -ENOENT || err == -EACCES)) { fprintf(stderr, "nvme_scan_topology failed %d\n", err); nvme_free_global_ctx(ctx); return 1; } nvme_for_each_host(ctx, h) { nvme_for_each_subsystem(h, s) { std::cout << nvme_subsystem_get_name(s) << " - NQN=" << nvme_subsystem_get_nqn(s) << "\n"; nvme_subsystem_for_each_ctrl(s, c) { std::cout << " `- " << nvme_ctrl_get_name(c) << " " << nvme_ctrl_get_transport(c) << " " << nvme_ctrl_get_address(c) << " " << nvme_ctrl_get_state(c) << "\n"; nvme_ctrl_for_each_ns(c, n) { std::cout << " `- " << nvme_ns_get_name(n) << "lba size:" << nvme_ns_get_lba_size(n) << " lba max:" << nvme_ns_get_lba_count(n) << "\n"; } nvme_ctrl_for_each_path(c, p) { std::cout << " `- " << nvme_path_get_name(p) << " " << nvme_path_get_ana_state(p) << "\n"; } } nvme_subsystem_for_each_ns(s, n) { std::cout << " `- " << nvme_ns_get_name(n) << "lba size:" << nvme_ns_get_lba_size(n) << " lba max:" << nvme_ns_get_lba_count(n) << "\n"; } } } std::cout << "\n"; nvme_free_global_ctx(ctx); return 0; }