FEMU  原版 master 7e238cc
FEMU: Accurate, Scalable and Extensible NVMe SSD Emulator (FAST'18)
nvme-util.c 文件参考

nvme工具函数定义 更多...

#include "./nvme.h"
nvme-util.c 的引用(Include)关系图:

函数

int nvme_check_sqid (FemuCtrl *n, uint16_t sqid)
 
int nvme_check_cqid (FemuCtrl *n, uint16_t cqid)
 
void nvme_inc_cq_tail (NvmeCQueue *cq)
 
void nvme_inc_sq_head (NvmeSQueue *sq)
 
void nvme_update_sq_tail (NvmeSQueue *sq)
 
void nvme_update_cq_head (NvmeCQueue *cq)
 
uint8_t nvme_cq_full (NvmeCQueue *cq)
 
uint8_t nvme_sq_empty (NvmeSQueue *sq)
 
uint64_t * nvme_setup_discontig (FemuCtrl *n, uint64_t prp_addr, uint16_t queue_depth, uint16_t entry_size)
 
void nvme_set_error_page (FemuCtrl *n, uint16_t sqid, uint16_t cid, uint16_t status, uint16_t location, uint64_t lba, uint32_t nsid)
 
uint16_t femu_nvme_rw_check_req (FemuCtrl *n, NvmeNamespace *ns, NvmeCmd *cmd, NvmeRequest *req, uint64_t slba, uint64_t elba, uint32_t nlb, uint16_t ctrl, uint64_t data_size, uint64_t meta_size)
 
void nvme_free_sq (NvmeSQueue *sq, FemuCtrl *n)
 
uint16_t nvme_init_sq (NvmeSQueue *sq, FemuCtrl *n, uint64_t dma_addr, uint16_t sqid, uint16_t cqid, uint16_t size, enum NvmeQueueFlags prio, int contig)
 初始化sq队列,预分配空间 更多...
 
uint16_t nvme_init_cq (NvmeCQueue *cq, FemuCtrl *n, uint64_t dma_addr, uint16_t cqid, uint16_t vector, uint16_t size, uint16_t irq_enabled, int contig)
 
void nvme_free_cq (NvmeCQueue *cq, FemuCtrl *n)
 
void nvme_set_ctrl_name (FemuCtrl *n, const char *mn, const char *sn, int *dev_id)
 

详细描述

nvme工具函数定义

函数说明

◆ femu_nvme_rw_check_req()

uint16_t femu_nvme_rw_check_req ( FemuCtrl n,
NvmeNamespace ns,
NvmeCmd cmd,
NvmeRequest req,
uint64_t  slba,
uint64_t  elba,
uint32_t  nlb,
uint16_t  ctrl,
uint64_t  data_size,
uint64_t  meta_size 
)
函数调用图:
这是这个函数的调用关系图:

◆ nvme_check_cqid()

int nvme_check_cqid ( FemuCtrl n,
uint16_t  cqid 
)
这是这个函数的调用关系图:

◆ nvme_check_sqid()

int nvme_check_sqid ( FemuCtrl n,
uint16_t  sqid 
)
这是这个函数的调用关系图:

◆ nvme_cq_full()

uint8_t nvme_cq_full ( NvmeCQueue cq)
函数调用图:
这是这个函数的调用关系图:

◆ nvme_free_cq()

void nvme_free_cq ( NvmeCQueue cq,
FemuCtrl n 
)
这是这个函数的调用关系图:

◆ nvme_free_sq()

void nvme_free_sq ( NvmeSQueue sq,
FemuCtrl n 
)
这是这个函数的调用关系图:

◆ nvme_inc_cq_tail()

void nvme_inc_cq_tail ( NvmeCQueue cq)
这是这个函数的调用关系图:

◆ nvme_inc_sq_head()

void nvme_inc_sq_head ( NvmeSQueue sq)
这是这个函数的调用关系图:

◆ nvme_init_cq()

uint16_t nvme_init_cq ( NvmeCQueue cq,
FemuCtrl n,
uint64_t  dma_addr,
uint16_t  cqid,
uint16_t  vector,
uint16_t  size,
uint16_t  irq_enabled,
int  contig 
)
函数调用图:
这是这个函数的调用关系图:

◆ nvme_init_sq()

uint16_t nvme_init_sq ( NvmeSQueue sq,
FemuCtrl n,
uint64_t  dma_addr,
uint16_t  sqid,
uint16_t  cqid,
uint16_t  size,
enum NvmeQueueFlags  prio,
int  contig 
)

初始化sq队列,预分配空间

返回
uint16_t
函数调用图:
这是这个函数的调用关系图:

◆ nvme_set_ctrl_name()

void nvme_set_ctrl_name ( FemuCtrl n,
const char *  mn,
const char *  sn,
int *  dev_id 
)
这是这个函数的调用关系图:

◆ nvme_set_error_page()

void nvme_set_error_page ( FemuCtrl n,
uint16_t  sqid,
uint16_t  cid,
uint16_t  status,
uint16_t  location,
uint64_t  lba,
uint32_t  nsid 
)
这是这个函数的调用关系图:

◆ nvme_setup_discontig()

uint64_t* nvme_setup_discontig ( FemuCtrl n,
uint64_t  prp_addr,
uint16_t  queue_depth,
uint16_t  entry_size 
)
函数调用图:
这是这个函数的调用关系图:

◆ nvme_sq_empty()

uint8_t nvme_sq_empty ( NvmeSQueue sq)
这是这个函数的调用关系图:

◆ nvme_update_cq_head()

void nvme_update_cq_head ( NvmeCQueue cq)
函数调用图:
这是这个函数的调用关系图:

◆ nvme_update_sq_tail()

void nvme_update_sq_tail ( NvmeSQueue sq)
函数调用图:
这是这个函数的调用关系图: