FEMU  原版 master 7e238cc
FEMU: Accurate, Scalable and Extensible NVMe SSD Emulator (FAST'18)
FemuCtrl结构体 参考

femu相关控制参数和数据成员 更多...

#include <nvme.h>

FemuCtrl 的协作图:

Public 成员函数

 QTAILQ_HEAD (, NvmeZone) exp_open_zones
 
 QTAILQ_HEAD (, NvmeZone) imp_open_zones
 
 QTAILQ_HEAD (, NvmeZone) closed_zones
 
 QTAILQ_HEAD (, NvmeZone) full_zones
 
 QSIMPLEQ_HEAD (aer_queue, NvmeAsyncEvent) aer_queue
 

成员变量

PCIDevice parent_obj
 
MemoryRegion iomem
 
MemoryRegion ctrl_mem
 
NvmeBar bar
 
QemuUUID uuid
 
uint32_t zasl_bs
 
uint8_t zasl
 
bool zoned
 
bool cross_zone_read
 
uint64_t zone_size_bs
 
bool zone_cap_bs
 
uint32_t max_active_zones
 
uint32_t max_open_zones
 
uint32_t zd_extension_size
 
const uint32_t * iocs
 
uint8_t csi
 
NvmeIdNsZonedid_ns_zoned
 
NvmeZonezone_array
 
uint32_t num_zones
 
uint64_t zone_size
 
uint64_t zone_capacity
 
uint32_t zone_size_log2
 
uint8_t * zd_extensions
 
int32_t nr_open_zones
 
int32_t nr_active_zones
 
NvmeParams params
 
FemuExtCtrlOps ext_ops
 nvme到各模式ssd接口 更多...
 
time_t start_time
 
uint16_t temperature
 
uint16_t page_size
 
uint16_t page_bits
 
uint16_t max_prp_ents
 
uint16_t cqe_size
 
uint16_t sqe_size
 
uint16_t oacs
 
uint16_t oncs
 
uint32_t reg_size
 
uint32_t num_namespaces
 
uint32_t num_io_queues
 sq(cq)个数 更多...
 
uint32_t max_q_ents
 
uint64_t ns_size
 
uint8_t db_stride
 
uint8_t aerl
 
uint8_t acl
 
uint8_t elpe
 
uint8_t elp_index
 
uint8_t error_count
 
uint8_t mdts
 
uint8_t cqr
 
uint8_t max_sqes
 
uint8_t max_cqes
 
uint8_t meta
 
uint8_t vwc
 
uint8_t mc
 
uint8_t dpc
 
uint8_t dps
 
uint8_t nlbaf
 
uint8_t extended
 
uint8_t lba_index
 
uint8_t mpsmin
 
uint8_t mpsmax
 
uint8_t ms
 
uint8_t ms_max
 
uint8_t intc
 
uint8_t intc_thresh
 
uint8_t intc_time
 
uint8_t outstanding_aers
 
uint8_t temp_warn_issued
 
uint8_t num_errors
 
uint8_t cqes_pending
 
uint16_t vid
 
uint16_t did
 
uint8_t dlfeat
 
uint32_t cmbsz
 
uint32_t cmbloc
 
uint8_t * cmbuf
 
QemuThread * poller
 
bool dataplane_started
 
bool vector_poll_started
 
char * serial
 
NvmeErrorLogelpes
 
NvmeRequest ** aer_reqs
 
NvmeNamespacenamespaces
 
NvmeSQueue ** sq
 sq队列列表(io) 更多...
 
NvmeCQueue ** cq
 cq队列列表(io) 更多...
 
NvmeSQueue admin_sq
 sq队列(admin) 更多...
 
NvmeCQueue admin_cq
 cq队列(admin) 更多...
 
NvmeFeatureVal features
 
NvmeIdCtrl id_ctrl
 
QEMUTimer * aer_timer
 
uint8_t aer_mask
 
uint64_t dbs_addr
 
uint64_t eis_addr
 
uint64_t dbs_addr_hva
 
uint64_t eis_addr_hva
 
uint8_t femu_mode
 
uint8_t lver
 femu模式,包括blackbox,ocssd,... 更多...
 
uint32_t memsz
 
OcCtrlParams oc_params
 
Oc12Ctrloc12_ctrl
 
volatile int64_t chip_next_avail_time [FEMU_MAX_NUM_CHIPS]
 
pthread_spinlock_t chip_locks [FEMU_MAX_NUM_CHIPS]
 
volatile int64_t chnl_next_avail_time [FEMU_MAX_NUM_CHNLS]
 
pthread_spinlock_t chnl_locks [FEMU_MAX_NUM_CHNLS]
 
int64_t upg_rd_lat_ns
 
int64_t cpg_rd_lat_ns
 
int64_t cupg_rd_lat_ns
 
int64_t clpg_rd_lat_ns
 
int64_t lpg_rd_lat_ns
 
int64_t upg_wr_lat_ns
 
int64_t cpg_wr_lat_ns
 
int64_t cupg_wr_lat_ns
 
int64_t clpg_wr_lat_ns
 
int64_t lpg_wr_lat_ns
 
int64_t blk_er_lat_ns
 
int64_t chnl_pg_xfer_lat_ns
 
struct ssdssd
 指向模拟的ssd 更多...
 
SsdDramBackendmbe
 femu后端内存(实际数据) 更多...
 
int completed
 
char devname [64]
 
struct rte_ring ** to_ftl
 生产者:nvme poller;消费者:ftl 更多...
 
struct rte_ring ** to_poller
 生产者:ftl;消费者:nvme poller 更多...
 
pqueue_t ** pq
 pqueue,暂存req的队列 更多...
 
bool * should_isr
 是否中断通知上层来取cq 更多...
 
bool poller_on
 
int64_t nr_tt_ios
 总io数量 更多...
 
int64_t nr_tt_late_ios
 没有按预计时延(超时)返回的io数量 更多...
 
bool print_log
 
uint8_t multipoller_enabled
 是否创建多个nvme poller 更多...
 
uint32_t num_poller
 nvme poller个数(前提是multupoller_enabled开启) 更多...
 
uint8_t flash_type
 

详细描述

femu相关控制参数和数据成员

成员函数说明

◆ QSIMPLEQ_HEAD()

FemuCtrl::QSIMPLEQ_HEAD ( aer_queue  ,
NvmeAsyncEvent   
)

◆ QTAILQ_HEAD() [1/4]

FemuCtrl::QTAILQ_HEAD ( NvmeZone  )

◆ QTAILQ_HEAD() [2/4]

FemuCtrl::QTAILQ_HEAD ( NvmeZone  )

◆ QTAILQ_HEAD() [3/4]

FemuCtrl::QTAILQ_HEAD ( NvmeZone  )

◆ QTAILQ_HEAD() [4/4]

FemuCtrl::QTAILQ_HEAD ( NvmeZone  )

结构体成员变量说明

◆ acl

uint8_t FemuCtrl::acl

◆ admin_cq

NvmeCQueue FemuCtrl::admin_cq

cq队列(admin)

◆ admin_sq

NvmeSQueue FemuCtrl::admin_sq

sq队列(admin)

◆ aer_mask

uint8_t FemuCtrl::aer_mask

◆ aer_reqs

NvmeRequest** FemuCtrl::aer_reqs

◆ aer_timer

QEMUTimer* FemuCtrl::aer_timer

◆ aerl

uint8_t FemuCtrl::aerl

◆ bar

NvmeBar FemuCtrl::bar

◆ blk_er_lat_ns

int64_t FemuCtrl::blk_er_lat_ns

◆ chip_locks

pthread_spinlock_t FemuCtrl::chip_locks[FEMU_MAX_NUM_CHIPS]

◆ chip_next_avail_time

volatile int64_t FemuCtrl::chip_next_avail_time[FEMU_MAX_NUM_CHIPS]

◆ chnl_locks

pthread_spinlock_t FemuCtrl::chnl_locks[FEMU_MAX_NUM_CHNLS]

◆ chnl_next_avail_time

volatile int64_t FemuCtrl::chnl_next_avail_time[FEMU_MAX_NUM_CHNLS]

◆ chnl_pg_xfer_lat_ns

int64_t FemuCtrl::chnl_pg_xfer_lat_ns

◆ clpg_rd_lat_ns

int64_t FemuCtrl::clpg_rd_lat_ns

center-lower page in QLC

◆ clpg_wr_lat_ns

int64_t FemuCtrl::clpg_wr_lat_ns

◆ cmbloc

uint32_t FemuCtrl::cmbloc

◆ cmbsz

uint32_t FemuCtrl::cmbsz

◆ cmbuf

uint8_t* FemuCtrl::cmbuf

◆ completed

int FemuCtrl::completed

◆ cpg_rd_lat_ns

int64_t FemuCtrl::cpg_rd_lat_ns

center page in TLC

◆ cpg_wr_lat_ns

int64_t FemuCtrl::cpg_wr_lat_ns

◆ cq

NvmeCQueue** FemuCtrl::cq

cq队列列表(io)

◆ cqe_size

uint16_t FemuCtrl::cqe_size

◆ cqes_pending

uint8_t FemuCtrl::cqes_pending

◆ cqr

uint8_t FemuCtrl::cqr

◆ cross_zone_read

bool FemuCtrl::cross_zone_read

◆ csi

uint8_t FemuCtrl::csi

◆ ctrl_mem

MemoryRegion FemuCtrl::ctrl_mem

◆ cupg_rd_lat_ns

int64_t FemuCtrl::cupg_rd_lat_ns

center-upper page in QLC

◆ cupg_wr_lat_ns

int64_t FemuCtrl::cupg_wr_lat_ns

◆ dataplane_started

bool FemuCtrl::dataplane_started

◆ db_stride

uint8_t FemuCtrl::db_stride

◆ dbs_addr

uint64_t FemuCtrl::dbs_addr

◆ dbs_addr_hva

uint64_t FemuCtrl::dbs_addr_hva

◆ devname

char FemuCtrl::devname[64]

◆ did

uint16_t FemuCtrl::did

◆ dlfeat

uint8_t FemuCtrl::dlfeat

◆ dpc

uint8_t FemuCtrl::dpc

◆ dps

uint8_t FemuCtrl::dps

◆ eis_addr

uint64_t FemuCtrl::eis_addr

◆ eis_addr_hva

uint64_t FemuCtrl::eis_addr_hva

◆ elp_index

uint8_t FemuCtrl::elp_index

◆ elpe

uint8_t FemuCtrl::elpe

◆ elpes

NvmeErrorLog* FemuCtrl::elpes

◆ error_count

uint8_t FemuCtrl::error_count

◆ ext_ops

FemuExtCtrlOps FemuCtrl::ext_ops

nvme到各模式ssd接口

◆ extended

uint8_t FemuCtrl::extended

◆ features

NvmeFeatureVal FemuCtrl::features

◆ femu_mode

uint8_t FemuCtrl::femu_mode

◆ flash_type

uint8_t FemuCtrl::flash_type

Nand Flash Type: SLC/MLC/TLC/QLC/PLC

◆ id_ctrl

NvmeIdCtrl FemuCtrl::id_ctrl

◆ id_ns_zoned

NvmeIdNsZoned* FemuCtrl::id_ns_zoned

◆ intc

uint8_t FemuCtrl::intc

◆ intc_thresh

uint8_t FemuCtrl::intc_thresh

◆ intc_time

uint8_t FemuCtrl::intc_time

◆ iocs

const uint32_t* FemuCtrl::iocs

◆ iomem

MemoryRegion FemuCtrl::iomem

◆ lba_index

uint8_t FemuCtrl::lba_index

◆ lpg_rd_lat_ns

int64_t FemuCtrl::lpg_rd_lat_ns

lower page in MLC/TLC/QLC

◆ lpg_wr_lat_ns

int64_t FemuCtrl::lpg_wr_lat_ns

◆ lver

uint8_t FemuCtrl::lver

femu模式,包括blackbox,ocssd,...

◆ max_active_zones

uint32_t FemuCtrl::max_active_zones

◆ max_cqes

uint8_t FemuCtrl::max_cqes

◆ max_open_zones

uint32_t FemuCtrl::max_open_zones

◆ max_prp_ents

uint16_t FemuCtrl::max_prp_ents

◆ max_q_ents

uint32_t FemuCtrl::max_q_ents

◆ max_sqes

uint8_t FemuCtrl::max_sqes

◆ mbe

SsdDramBackend* FemuCtrl::mbe

femu后端内存(实际数据)

◆ mc

uint8_t FemuCtrl::mc

◆ mdts

uint8_t FemuCtrl::mdts

◆ memsz

uint32_t FemuCtrl::memsz

◆ meta

uint8_t FemuCtrl::meta

◆ mpsmax

uint8_t FemuCtrl::mpsmax

◆ mpsmin

uint8_t FemuCtrl::mpsmin

◆ ms

uint8_t FemuCtrl::ms

◆ ms_max

uint8_t FemuCtrl::ms_max

◆ multipoller_enabled

uint8_t FemuCtrl::multipoller_enabled

是否创建多个nvme poller

◆ namespaces

NvmeNamespace* FemuCtrl::namespaces

◆ nlbaf

uint8_t FemuCtrl::nlbaf

◆ nr_active_zones

int32_t FemuCtrl::nr_active_zones

◆ nr_open_zones

int32_t FemuCtrl::nr_open_zones

◆ nr_tt_ios

int64_t FemuCtrl::nr_tt_ios

总io数量

◆ nr_tt_late_ios

int64_t FemuCtrl::nr_tt_late_ios

没有按预计时延(超时)返回的io数量

◆ ns_size

uint64_t FemuCtrl::ns_size

◆ num_errors

uint8_t FemuCtrl::num_errors

◆ num_io_queues

uint32_t FemuCtrl::num_io_queues

sq(cq)个数

◆ num_namespaces

uint32_t FemuCtrl::num_namespaces

◆ num_poller

uint32_t FemuCtrl::num_poller

nvme poller个数(前提是multupoller_enabled开启)

◆ num_zones

uint32_t FemuCtrl::num_zones

◆ oacs

uint16_t FemuCtrl::oacs

◆ oc12_ctrl

Oc12Ctrl* FemuCtrl::oc12_ctrl

◆ oc_params

OcCtrlParams FemuCtrl::oc_params

◆ oncs

uint16_t FemuCtrl::oncs

◆ outstanding_aers

uint8_t FemuCtrl::outstanding_aers

◆ page_bits

uint16_t FemuCtrl::page_bits

◆ page_size

uint16_t FemuCtrl::page_size

◆ params

NvmeParams FemuCtrl::params

◆ parent_obj

PCIDevice FemuCtrl::parent_obj

◆ poller

QemuThread* FemuCtrl::poller

◆ poller_on

bool FemuCtrl::poller_on

◆ pq

pqueue_t** FemuCtrl::pq

pqueue,暂存req的队列

◆ print_log

bool FemuCtrl::print_log

◆ reg_size

uint32_t FemuCtrl::reg_size

◆ serial

char* FemuCtrl::serial

◆ should_isr

bool* FemuCtrl::should_isr

是否中断通知上层来取cq

◆ sq

NvmeSQueue** FemuCtrl::sq

sq队列列表(io)

◆ sqe_size

uint16_t FemuCtrl::sqe_size

◆ ssd

struct ssd* FemuCtrl::ssd

指向模拟的ssd

◆ start_time

time_t FemuCtrl::start_time

◆ temp_warn_issued

uint8_t FemuCtrl::temp_warn_issued

◆ temperature

uint16_t FemuCtrl::temperature

◆ to_ftl

struct rte_ring** FemuCtrl::to_ftl

生产者:nvme poller;消费者:ftl

◆ to_poller

struct rte_ring** FemuCtrl::to_poller

生产者:ftl;消费者:nvme poller

◆ upg_rd_lat_ns

int64_t FemuCtrl::upg_rd_lat_ns

upper page in MLC/TLC/QLC

◆ upg_wr_lat_ns

int64_t FemuCtrl::upg_wr_lat_ns

◆ uuid

QemuUUID FemuCtrl::uuid

◆ vector_poll_started

bool FemuCtrl::vector_poll_started

◆ vid

uint16_t FemuCtrl::vid

◆ vwc

uint8_t FemuCtrl::vwc

◆ zasl

uint8_t FemuCtrl::zasl

◆ zasl_bs

uint32_t FemuCtrl::zasl_bs

◆ zd_extension_size

uint32_t FemuCtrl::zd_extension_size

◆ zd_extensions

uint8_t* FemuCtrl::zd_extensions

◆ zone_array

NvmeZone* FemuCtrl::zone_array

◆ zone_cap_bs

bool FemuCtrl::zone_cap_bs

◆ zone_capacity

uint64_t FemuCtrl::zone_capacity

◆ zone_size

uint64_t FemuCtrl::zone_size

◆ zone_size_bs

uint64_t FemuCtrl::zone_size_bs

◆ zone_size_log2

uint32_t FemuCtrl::zone_size_log2

◆ zoned

bool FemuCtrl::zoned

该结构体的文档由以下文件生成: