SPDK示例代码分析

一 SPDK简介

SPDK是intel公司为NVME ssd硬件开发的一套用于加速硬件性能的一款开发套件,支持不同层面的lib库,包括nvme ssd driver、ioat、bdev等。

二 源码目录

  • app
    • app/iscsi_tgt: iscsi target
    • app/nvmf_tgt: NVMe-oF target
    • app/iscsi_top:iscsi top工具 类似于linux top,用来监控iscsi
    • app/trace:iscsi target和nvme-of target trace工具
    • app/vhost:将virtio控制器呈现给基于qemu的虚拟机,并对IO进行处理
  • build
  • doc:spdk 下的doc文件
  • dpdk:spdk调用了dpdk的很多基础库
  • etc:各类型使用方式的基本配置
  • examples:示例代码
  • lib:开发库
  • mk:makefile文件
  • scripts:脚本及环境配置相关
  • test:各模块功能性能测试

    三 示例代码

    本文主要从hello_world代码开始,分析应用如何使用nvme ssd设备,hello_world代码利用ssd存储数据并读出。

int main(int argc, char **argv){
    int rc;
    struct spdk_env_opts opts;

    spdk_env_opts_init(&opts);
    opts.name = "hello_world";
    opts.shm_id = 0;
    if (spdk_env_init(&opts) < 0) {
  //前半部分代码主要都是用来初始化spdk环境及配置基本项
        fprintf(stderr, "Unable to initialize SPDK env\n");
        return 1;
    }

    printf("Initializing NVMe Controllers\n");

    rc = spdk_nvme_probe(NULL, NULL, probe_cb, attach_cb, NULL);//调用接口将机器内的nvme ssd加入列表
    if (rc != 0) {
        fprintf(stderr, "spdk_nvme_probe() failed\n");
        cleanup();
        return 1;
    }

    if (g_controllers == NULL) {
        fprintf(stderr, "no NVMe controllers found\n");
        cleanup();
        return 1;
    }

    
  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值