#include "../nvme.h"

结构体 | |
| struct | Oc20ChunkState |
| struct | Oc20RwCmd |
| struct | Oc20DmCmd |
| struct | Oc20AddrF |
| struct | Oc20IdGeo |
| struct | Oc20IdWrt |
| struct | Oc20IdPerf |
| struct | Oc20IdLBAF |
| struct | Oc20Header |
| struct | Oc20NamespaceGeometry |
| struct | Oc20Ctrl |
| struct | Oc20Namespace |
| struct | Oc20AddrBucket |
宏定义 | |
| #define | OC20_VID (0x1d1d) |
| #define | OC20_DID (0x1f1f) |
| #define | OC20_MAGIC ('L' << 24 | 'N' << 16 | 'V' << 8 | 'M') |
| #define | OC20_CMD_MAX_LBAS (64) |
| #define | OC20_NS_LOGPAGE_CHUNK_INFO_BLK_OFFSET(ns) ((ns)->blk.begin + sizeof(Oc20NamespaceGeometry)) |
| #define | OC20_LBA_GET_SECTR(lbaf, lba) |
| #define | OC20_LBA_GET_CHUNK(lbaf, lba) |
| #define | OC20_LBA_GET_PUNIT(lbaf, lba) |
| #define | OC20_LBA_GET_GROUP(lbaf, lba) (lba >> (lbaf)->grp_offset) |
| #define | OC20_LBA(lbaf, group, punit, chunk, sectr) |
| #define | OC20_GROUP_FROM_CHUNK_INDEX(lns, idx) (idx / (lns)->chks_per_grp) |
| #define | OC20_PUNIT_FROM_CHUNK_INDEX(lns, idx) (idx % (lns)->chks_per_grp / (lns)->chks_per_lun) |
| #define | OC20_CHUNK_FROM_CHUNK_INDEX(lns, idx) (idx % (lns)->chks_per_lun) |
| #define | OC20_LBA_FROM_CHUNK_INDEX(lns, idx) |
| #define | OC20_LBA_FORMAT_TEMPLATE "lba 0xffffffffffffffff pugrp 255 punit 255 chunk 65535 sectr 4294967295" |
| #define | OC20_CHUNK_RESETABLE (OC20_CHUNK_FREE | OC20_CHUNK_CLOSED | OC20_CHUNK_OPEN) |
类型定义 | |
| typedef struct Oc20ChunkState | Oc20CS |
| typedef struct Oc20RwCmd | Oc20RwCmd |
| typedef struct Oc20DmCmd | Oc20DmCmd |
| typedef struct Oc20AddrF | Oc20AddrF |
| typedef struct Oc20IdGeo | Oc20IdGeo |
| typedef struct Oc20IdWrt | Oc20IdWrt |
| typedef struct Oc20IdPerf | Oc20IdPerf |
| typedef struct Oc20IdLBAF | Oc20IdLBAF |
| typedef struct Oc20Header | Oc20Header |
| typedef struct Oc20NamespaceGeometry | Oc20NamespaceGeometry |
| typedef struct Oc20Ctrl | Oc20Ctrl |
| typedef struct Oc20Namespace | Oc20Namespace |
| typedef struct Oc20AddrBucket | Oc20AddrBucket |
| typedef struct NvmeRequest | NvmeRequest |
| typedef struct FemuCtrl | FemuCtrl |
枚举 | |
| enum | Oc20IoCommands { OC20_CMD_VECT_ERASE = 0x90, OC20_CMD_VECT_WRITE = 0x91, OC20_CMD_VECT_READ = 0x92 } |
| enum | Oc20MetaStates { OC20_SEC_UNKNOWN = 0x0, OC20_SEC_WRITTEN = 0xAC, OC20_SEC_ERASED = 0xDC } |
| enum | Oc20ChunkStates { OC20_CHUNK_FREE = 1 << 0, OC20_CHUNK_CLOSED = 1 << 1, OC20_CHUNK_OPEN = 1 << 2, OC20_CHUNK_OFFLINE = 1 << 3 } |
| enum | Oc20ChunkTypes { OC20_CHUNK_TYPE_SEQ = 1 << 0, OC20_CHUNK_TYPE_RAN = 1 << 1, OC20_CHUNK_TYPE_SRK = 1 << 4 } |
| enum | Oc20StatusCodes { OC20_LBAL_SGL_LENGTH_INVALID = 0x01c1, OC20_WRITE_NEXT_UNIT = 0x02f0, OC20_CHUNK_EARLY_CLOSE = 0x02f1, OC20_OUT_OF_ORDER_WRITE = 0x02f2, OC20_OFFLINE_CHUNK = 0x02c0, OC20_INVALID_RESET = 0x02c1 } |
| enum | Oc20ParamsMccap { OC20_PARAMS_MCCAP_MULTIPLE_RESETS = 0x1 << 1, OC20_PARAMS_MCCAP_EARLY_RESET = 0x1 << 2 } |
| enum | Oc20LogPage { OC20_CHUNK_INFO = 0xCA } |
函数 | |
| static void | _oc20_check_size (void) |
| static int | nvme_rw_is_write (NvmeRequest *req) |
| static int | oc20_rw_is_write (NvmeRequest *req) |
| static uint64_t | nvme_lba_to_sector_index (FemuCtrl *n, NvmeNamespace *ns, uint64_t lba) |
| static int | oc20_lba_valid (FemuCtrl *n, NvmeNamespace *ns, uint64_t lba) |
| static uint64_t | oc20_lba_to_chunk_index (FemuCtrl *n, NvmeNamespace *ns, uint64_t lba) |
| static uint64_t | oc20_lba_to_sector_index (FemuCtrl *n, NvmeNamespace *ns, uint64_t lba) |
| #define OC20_CHUNK_FROM_CHUNK_INDEX | ( | lns, | |
| idx | |||
| ) | (idx % (lns)->chks_per_lun) |
| #define OC20_CHUNK_RESETABLE (OC20_CHUNK_FREE | OC20_CHUNK_CLOSED | OC20_CHUNK_OPEN) |
| #define OC20_CMD_MAX_LBAS (64) |
| #define OC20_DID (0x1f1f) |
| #define OC20_GROUP_FROM_CHUNK_INDEX | ( | lns, | |
| idx | |||
| ) | (idx / (lns)->chks_per_grp) |
| #define OC20_LBA | ( | lbaf, | |
| group, | |||
| punit, | |||
| chunk, | |||
| sectr | |||
| ) |
| #define OC20_LBA_FORMAT_TEMPLATE "lba 0xffffffffffffffff pugrp 255 punit 255 chunk 65535 sectr 4294967295" |
| #define OC20_LBA_FROM_CHUNK_INDEX | ( | lns, | |
| idx | |||
| ) |
| #define OC20_MAGIC ('L' << 24 | 'N' << 16 | 'V' << 8 | 'M') |
| #define OC20_NS_LOGPAGE_CHUNK_INFO_BLK_OFFSET | ( | ns | ) | ((ns)->blk.begin + sizeof(Oc20NamespaceGeometry)) |
| #define OC20_PUNIT_FROM_CHUNK_INDEX | ( | lns, | |
| idx | |||
| ) | (idx % (lns)->chks_per_grp / (lns)->chks_per_lun) |
| #define OC20_VID (0x1d1d) |
| typedef struct NvmeRequest NvmeRequest |
| typedef struct Oc20AddrBucket Oc20AddrBucket |
| typedef struct Oc20ChunkState Oc20CS |
| typedef struct Oc20Header Oc20Header |
| typedef struct Oc20IdLBAF Oc20IdLBAF |
| typedef struct Oc20IdPerf Oc20IdPerf |
| typedef struct Oc20Namespace Oc20Namespace |
| typedef struct Oc20NamespaceGeometry Oc20NamespaceGeometry |
| enum Oc20ChunkStates |
| enum Oc20ChunkTypes |
| enum Oc20IoCommands |
| enum Oc20LogPage |
| enum Oc20MetaStates |
| enum Oc20ParamsMccap |
| enum Oc20StatusCodes |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |

|
inlinestatic |

|
inlinestatic |

|
inlinestatic |

|
inlinestatic |

