FEMU  原版 master 7e238cc
FEMU: Accurate, Scalable and Extensible NVMe SSD Emulator (FAST'18)
oc12.c 文件参考
#include "./oc12.h"
oc12.c 的引用(Include)关系图:

函数

static int qemu_fls (int i)
 
static bool is_oc12_admin_cmd (uint8_t opcode)
 
static void oc12_tbl_initialize (NvmeNamespace *ns)
 
static uint64_t ppa2secidx (Oc12Ctrl *ln, uint64_t ppa)
 
static int oc12_write_oob_meta (Oc12Ctrl *ln, uint64_t ppa, void *meta)
 
static int oc12_read_oob_meta (Oc12Ctrl *ln, uint64_t ppa, void *meta)
 
static int oc12_meta_state_get (Oc12Ctrl *ln, uint64_t ppa, uint32_t *state)
 
static int oc12_meta_blk_set_erased (NvmeNamespace *ns, Oc12Ctrl *ln, uint64_t *psl, int nr_ppas)
 
static int oc12_meta_state_set_written (Oc12Ctrl *ln, uint64_t ppa)
 
static void * oc12_meta_index (Oc12Ctrl *ln, void *meta, uint32_t index)
 
static uint16_t oc12_rw_check_req (FemuCtrl *n, NvmeNamespace *ns, NvmeCmd *cmd, NvmeRequest *req, uint64_t *psl, uint32_t nr_pages, uint32_t nlb, uint64_t data_size, uint64_t meta_size)
 
static void oc12_read_ppa_list (FemuCtrl *n, Oc12RwCmd *cmd, uint64_t *ppa_list)
 
static void parse_ppa_list (FemuCtrl *n, NvmeNamespace *ns, NvmeCmd *cmd, NvmeRequest *req, AddrBucket *bucket, int *nr)
 
static int oc12_advance_status (FemuCtrl *n, NvmeNamespace *ns, NvmeCmd *cmd, NvmeRequest *req)
 
static uint16_t oc12_read (FemuCtrl *n, NvmeNamespace *ns, NvmeCmd *cmd, NvmeRequest *req)
 
static uint16_t oc12_write (FemuCtrl *n, NvmeNamespace *ns, NvmeCmd *cmd, NvmeRequest *req)
 
static uint32_t oc12_tbl_size (NvmeNamespace *ns)
 
static uint16_t oc12_identity (FemuCtrl *n, NvmeCmd *cmd)
 
static uint16_t oc12_get_l2p_tbl (FemuCtrl *n, NvmeCmd *cmd)
 
static uint16_t oc12_bbt_get (FemuCtrl *n, NvmeCmd *cmd)
 
static uint16_t oc12_bbt_set (FemuCtrl *n, NvmeCmd *cmd)
 
static int oc12_read_tbls (FemuCtrl *n)
 
static uint16_t oc12_admin_cmd (FemuCtrl *n, NvmeCmd *cmd)
 
static uint16_t oc12_erase_async (FemuCtrl *n, NvmeNamespace *ns, NvmeCmd *cmd, NvmeRequest *req)
 
static void oc12_init_id_ctrl (Oc12Ctrl *ln)
 
static int oc12_init_meta (Oc12Ctrl *ln)
 
static int oc12_init_bbtbl (FemuCtrl *n, NvmeNamespace *ns)
 
static void oc12_release_locks (FemuCtrl *n)
 
static int oc12_init_misc (FemuCtrl *n)
 
static int oc12_init_params (FemuCtrl *n)
 
static int oc12_init_more (FemuCtrl *n)
 
static void oc12_exit (FemuCtrl *n)
 
static uint16_t oc12_nvme_rw (FemuCtrl *n, NvmeNamespace *ns, NvmeCmd *cmd, NvmeRequest *req)
 
static uint16_t oc12_io_cmd (FemuCtrl *n, NvmeNamespace *ns, NvmeCmd *cmd, NvmeRequest *req)
 
static void oc12_set_ctrl_str (FemuCtrl *n)
 
static void oc12_init (FemuCtrl *n, Error **errp)
 
int nvme_register_ocssd12 (FemuCtrl *n)
 

函数说明

◆ is_oc12_admin_cmd()

static bool is_oc12_admin_cmd ( uint8_t  opcode)
inlinestatic

◆ nvme_register_ocssd12()

int nvme_register_ocssd12 ( FemuCtrl n)
函数调用图:
这是这个函数的调用关系图:

◆ oc12_admin_cmd()

static uint16_t oc12_admin_cmd ( FemuCtrl n,
NvmeCmd cmd 
)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_advance_status()

static int oc12_advance_status ( FemuCtrl n,
NvmeNamespace ns,
NvmeCmd cmd,
NvmeRequest req 
)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_bbt_get()

static uint16_t oc12_bbt_get ( FemuCtrl n,
NvmeCmd cmd 
)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_bbt_set()

static uint16_t oc12_bbt_set ( FemuCtrl n,
NvmeCmd cmd 
)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_erase_async()

static uint16_t oc12_erase_async ( FemuCtrl n,
NvmeNamespace ns,
NvmeCmd cmd,
NvmeRequest req 
)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_exit()

static void oc12_exit ( FemuCtrl n)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_get_l2p_tbl()

static uint16_t oc12_get_l2p_tbl ( FemuCtrl n,
NvmeCmd cmd 
)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_identity()

static uint16_t oc12_identity ( FemuCtrl n,
NvmeCmd cmd 
)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_init()

static void oc12_init ( FemuCtrl n,
Error **  errp 
)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_init_bbtbl()

static int oc12_init_bbtbl ( FemuCtrl n,
NvmeNamespace ns 
)
static
这是这个函数的调用关系图:

◆ oc12_init_id_ctrl()

static void oc12_init_id_ctrl ( Oc12Ctrl ln)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_init_meta()

static int oc12_init_meta ( Oc12Ctrl ln)
static
这是这个函数的调用关系图:

◆ oc12_init_misc()

static int oc12_init_misc ( FemuCtrl n)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_init_more()

static int oc12_init_more ( FemuCtrl n)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_init_params()

static int oc12_init_params ( FemuCtrl n)
static
这是这个函数的调用关系图:

◆ oc12_io_cmd()

static uint16_t oc12_io_cmd ( FemuCtrl n,
NvmeNamespace ns,
NvmeCmd cmd,
NvmeRequest req 
)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_meta_blk_set_erased()

static int oc12_meta_blk_set_erased ( NvmeNamespace ns,
Oc12Ctrl ln,
uint64_t *  psl,
int  nr_ppas 
)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_meta_index()

static void* oc12_meta_index ( Oc12Ctrl ln,
void *  meta,
uint32_t  index 
)
static
这是这个函数的调用关系图:

◆ oc12_meta_state_get()

static int oc12_meta_state_get ( Oc12Ctrl ln,
uint64_t  ppa,
uint32_t *  state 
)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_meta_state_set_written()

static int oc12_meta_state_set_written ( Oc12Ctrl ln,
uint64_t  ppa 
)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_nvme_rw()

static uint16_t oc12_nvme_rw ( FemuCtrl n,
NvmeNamespace ns,
NvmeCmd cmd,
NvmeRequest req 
)
static
这是这个函数的调用关系图:

◆ oc12_read()

static uint16_t oc12_read ( FemuCtrl n,
NvmeNamespace ns,
NvmeCmd cmd,
NvmeRequest req 
)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_read_oob_meta()

static int oc12_read_oob_meta ( Oc12Ctrl ln,
uint64_t  ppa,
void *  meta 
)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_read_ppa_list()

static void oc12_read_ppa_list ( FemuCtrl n,
Oc12RwCmd cmd,
uint64_t *  ppa_list 
)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_read_tbls()

static int oc12_read_tbls ( FemuCtrl n)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_release_locks()

static void oc12_release_locks ( FemuCtrl n)
static
这是这个函数的调用关系图:

◆ oc12_rw_check_req()

static uint16_t oc12_rw_check_req ( FemuCtrl n,
NvmeNamespace ns,
NvmeCmd cmd,
NvmeRequest req,
uint64_t *  psl,
uint32_t  nr_pages,
uint32_t  nlb,
uint64_t  data_size,
uint64_t  meta_size 
)
static
这是这个函数的调用关系图:

◆ oc12_set_ctrl_str()

static void oc12_set_ctrl_str ( FemuCtrl n)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_tbl_initialize()

static void oc12_tbl_initialize ( NvmeNamespace ns)
static
这是这个函数的调用关系图:

◆ oc12_tbl_size()

static uint32_t oc12_tbl_size ( NvmeNamespace ns)
static
这是这个函数的调用关系图:

◆ oc12_write()

static uint16_t oc12_write ( FemuCtrl n,
NvmeNamespace ns,
NvmeCmd cmd,
NvmeRequest req 
)
static
函数调用图:
这是这个函数的调用关系图:

◆ oc12_write_oob_meta()

static int oc12_write_oob_meta ( Oc12Ctrl ln,
uint64_t  ppa,
void *  meta 
)
static
函数调用图:
这是这个函数的调用关系图:

◆ parse_ppa_list()

static void parse_ppa_list ( FemuCtrl n,
NvmeNamespace ns,
NvmeCmd cmd,
NvmeRequest req,
AddrBucket bucket,
int *  nr 
)
static
函数调用图:
这是这个函数的调用关系图:

◆ ppa2secidx()

static uint64_t ppa2secidx ( Oc12Ctrl ln,
uint64_t  ppa 
)
static
这是这个函数的调用关系图:

◆ qemu_fls()

static int qemu_fls ( int  i)
inlinestatic
这是这个函数的调用关系图: