00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _INCLUDE_FIO_PUBLIC_IODIMM_TYPES_H_
00027 #define _INCLUDE_FIO_PUBLIC_IODIMM_TYPES_H_
00028
00029 #ifdef __cplusplus
00030 extern "C" {
00031 #endif
00032
00033 #include <fio/public/common_types.h>
00034 #include <fio/public/dyn_struct_alloc.h>
00035
00037 #define FIO_DRIVER_VER_SIZE 255
00038
00039 #define FIO_IODIMM_LABEL_SIZE 255
00040
00041 #define FIO_IODIMM_DEVICE_NAME_SIZE 100
00042
00043 #define FIO_IODIMM_BLK_DEV_NAME_SIZE 100
00044
00045 #define FIO_IODIMM_ALT_PART_NUM_SIZE 255
00046
00048 #define FIO_IODIMM_UUID_SIZE 37
00049
00050
00051
00052
00053
00058 typedef enum
00059 {
00060 FIO_IODIMM_SELECT_NAME = 0,
00061 FIO_IODIMM_SELECT_INDEX = 1,
00062 FIO_IODIMM_SELECT_HANDLE = 2,
00067 FIO_IODIMM_SELECT_PCI = 3,
00070 FIO_IODIMM_SELECT_PCI_STRING = 4
00073 } fio_iodimm_selector_mode;
00074
00079 typedef struct fio_iodimm_selector
00080 {
00081 uint32_t lib_version;
00082 fio_iodimm_selector_mode mode;
00083 uint32_t index;
00084 const char* device_name;
00085 void* device_handle;
00086 uint8_t open_count;
00087 const char* pci_address;
00088 uint16_t pci_domain;
00089 uint8_t pci_bus;
00090 uint8_t pci_device;
00091 uint8_t pci_function;
00092 void* pci_info;
00093 uint8_t csr_count;
00094 void* csr_handle;
00095 } fio_iodimm_selector_t;
00096
00101 typedef struct fio_iodimm_iterator
00102 {
00103 uint32_t lib_version;
00104 fio_iodimm_selector_mode mode;
00105 void* position;
00106 fio_status_result_t result;
00109 } fio_iodimm_iterator_t;
00110
00111
00112
00113
00115 typedef enum
00116 {
00117 FIO_IODIMM_ADAPTER_TYPE_IODRIVE = 0,
00118 FIO_IODIMM_ADAPTER_TYPE_IODRIVE_LOWPRO2 = 1,
00119 FIO_IODIMM_ADAPTER_TYPE_IODRIVE_DUO = 2,
00120 FIO_IODIMM_ADAPTER_TYPE_IOSAN = 3,
00121 FIO_IODIMM_ADAPTER_TYPE_UNKNOWN = 4,
00122 FIO_IODIMM_ADAPTER_TYPE_IOOCTAL = 5,
00123 } fio_iodimm_adapter_type_t;
00124
00126 typedef struct fio_iodimm_adapter_info
00127 {
00128 uint32_t lib_version;
00129 fio_iodimm_adapter_type_t type;
00130 uint32_t port_number;
00132 uint64_t serial_number;
00133 uint8_t external_power_present;
00135
00136 fio_pciexpress_info_t pcie;
00137 fio_iodimm_compatibility_t bandwidth_compatibility;
00138 fio_iodimm_compatibility_t power_compatibility;
00139 uint8_t power_monitor_enabled;
00140 float power_limit_watts;
00142 uint8_t powerloss_protect_avail;
00143 uint8_t powerloss_protect_enabled;
00144
00145 uint8_t required_is_valid;
00146 float required_power_watts;
00147 float required_bandwidth_MBps;
00148 } fio_iodimm_adapter_info_t;
00149
00151 typedef struct fio_iodimm_product_info
00152 {
00153 uint32_t lib_version;
00154 uint64_t serial_number;
00155 uint32_t date;
00156 char manufacturer_name[255];
00157 char part_number_int[255];
00158 char part_number_ext[255];
00159 char name[255];
00160 char subsys_name[255];
00161 char fpga_id[255];
00162 uint32_t factory_fw_version;
00163
00164 uint8_t product_info_invalid;
00165
00166 uint32_t rated_endurance_tbytes;
00167 uint32_t rated_endurance_days;
00168 } fio_iodimm_product_info_t;
00169
00171 typedef enum
00172 {
00173 FIO_IODIMM_STATE_DETACHED = 0,
00174 FIO_IODIMM_STATE_ATTACHING = 1,
00175 FIO_IODIMM_STATE_SCANNING_METADATA = 2,
00176 FIO_IODIMM_STATE_SCANNING_DATA = 3,
00177 FIO_IODIMM_STATE_ATTACHED = 4,
00178 FIO_IODIMM_STATE_DETACHING = 5,
00179 FIO_IODIMM_STATE_STOPPING = 6,
00180 FIO_IODIMM_STATE_STOPPED = 7,
00181 FIO_IODIMM_STATE_MINIMAL = 8,
00182 FIO_IODIMM_STATE_FAILED = 9,
00183 FIO_IODIMM_STATE_UNKNOWN = 10
00184 } fio_iodimm_state_t;
00185
00187 typedef enum
00188 {
00189 FIO_IODIMM_FLASHBACK_STATUS_UNAVAILABLE = 0,
00190 FIO_IODIMM_FLASHBACK_STATUS_NOT_ACTIVE = 1,
00191 FIO_IODIMM_FLASHBACK_STATUS_ACTIVE = 2,
00192 } fio_iodimm_flashback_status_t;
00193
00195 typedef struct
00196 {
00197 uint32_t lib_version;
00198 fio_iodimm_flashback_status_t status;
00199 uint8_t failed;
00201 } fio_iodimm_flashback_t;
00202
00204 typedef enum
00205 {
00206 FIO_MINMODE_REASON_UNKNOWN = 0,
00207 FIO_MINMODE_REASON_FW_OUT_OF_DATE = 1,
00208 FIO_MINMODE_REASON_INSUFFICIENT_POWER = 2,
00209 FIO_MINMODE_REASON_DUAL_PLANE_FAIL = 3,
00210 FIO_MINMODE_REASON_FORCED = 4,
00211 FIO_MINMODE_REASON_INTERNAL = 5,
00212 FIO_MINMODE_REASON_CARD_LIMIT_EXCEEDED = 6,
00213 FIO_MINMODE_REASON_NOT_IN_MINMODE = 7,
00214 FIO_MINMODE_REASON_UNSUPPORTED_OS = 8,
00215 FIO_MINMODE_REASON_INSUFFICIENT_MEMORY = 9,
00216 FIO_MINMODE_REASON_SMP_BOOTLOADER_MODE = 10
00217 } fio_iodimm_minmode_reason_t;
00218
00220 typedef struct
00221 {
00222 uint32_t lib_version;
00223 fio_iodimm_state_t state;
00224 fio_iodimm_minmode_reason_t minimal_mode_reason;
00225 } fio_iodimm_state_info_t;
00226
00228 typedef enum fio_iodimm_write_throttling_level
00229 {
00230 FIO_WRITE_THROTTLE_NONE = 0,
00231 FIO_WRITE_THROTTLE_PARTIAL = 1,
00232 FIO_WRITE_THROTTLE_COMPLETE = 2
00233 } fio_iodimm_write_throttling_level_t;
00234
00236 typedef enum fio_iodimm_write_throttling_reason
00237 {
00238 FIO_WRITE_THROTTLE_REASON_NONE = 0,
00239 FIO_WRITE_THROTTLE_REASON_USER = 1,
00240 FIO_WRITE_THROTTLE_REASON_NO_MD_BLOCKS = 2,
00241 FIO_WRITE_THROTTLE_REASON_NOMEM = 3,
00242 FIO_WRITE_THROTTLE_REASON_DEAD_DIE = 4,
00243 FIO_WRITE_THROTTLE_REASON_WEAROUT = 5,
00244 FIO_WRITE_THROTTLE_REASON_ADAPTER_POWER = 6,
00246 FIO_WRITE_THROTTLE_REASON_INTERNAL = 7,
00247 FIO_WRITE_THROTTLE_REASON_LIMIT_POWER = 8,
00248 FIO_WRITE_THROTTLE_REASON_GROOM_FAILS = 9,
00249 } fio_iodimm_write_throttling_reason_t;
00250
00252 typedef struct fio_iodimm_write_throttling
00253 {
00254 uint32_t lib_version;
00255 fio_iodimm_write_throttling_level_t state;
00256 fio_iodimm_write_throttling_reason_t reason;
00257 } fio_iodimm_write_throttling_t;
00258
00260 typedef enum
00261 {
00262 FIO_PEAKS_NONE = 0,
00263 FIO_PEAKS_MAX_VOLTS = 1 << 0,
00264 FIO_PEAKS_MIN_VOLTS = 1 << 1,
00265 FIO_PEAKS_MAX_WATTS = 1 << 2,
00266 FIO_PEAKS_ALL = 0xff
00267 } fio_iodimm_power_usage_peaks_t;
00268
00270 typedef struct fio_iodimm_power_usage
00271 {
00272 uint32_t lib_version;
00273 uint8_t is_valid;
00275 float bus_volts;
00276 float bus_peak_volts;
00277 float bus_min_volts;
00278 float bus_watts;
00279 float bus_peak_watts;
00280 float bus_amps;
00281 float bus_peak_amps;
00282 } fio_iodimm_power_usage_t;
00283
00285 typedef struct fio_iodimm_power_setpoints
00286 {
00287 uint32_t lib_version;
00288 float low_watts;
00289 float high_watts;
00290 } fio_iodimm_power_setpoints_t;
00291
00293 typedef enum
00294 {
00295 FIO_HW_ALERT_NONE = 0x00,
00296 FIO_HW_ALERT_TEMPERATURE = 0x01,
00297 FIO_HW_ALERT_VCCINT = 0x02,
00298 FIO_HW_ALERT_VCCAUX = 0x04,
00299 FIO_HW_ALERT_OVERTEMP = 0x08,
00300 } fio_iodimm_hw_alert_type_t;
00301
00303 typedef struct fio_iodimm_hw_alerts
00304 {
00305 uint32_t lib_version;
00306 fio_iodimm_hw_alert_type_t type;
00307 fio_iodimm_hw_alert_type_t active_mask;
00308 int64_t timestamp;
00309 float current_value;
00310 float setpoint_low;
00311 float setpoint_high;
00312 } fio_iodimm_hw_alerts_t;
00313
00315 typedef struct fio_iodimm_capacity_entry
00316 {
00317 uint64_t capacity_bytes;
00318 int64_t timestamp;
00319
00320 float health_percent;
00321 } fio_iodimm_capacity_entry_t;
00322
00324 typedef struct fio_iodimm_usage_entry
00325 {
00326 uint64_t usage_bytes;
00327 int64_t timestamp;
00328 } fio_iodimm_usage_entry_t;
00329
00331 typedef struct fio_iodimm_temperature_entry
00332 {
00333 time_t start_timestamp;
00334 time_t end_timestamp;
00335 int8_t max_degrees_C;
00336 int8_t avg_degrees_C;
00337 } fio_iodimm_temperature_entry_t;
00338
00340 typedef enum
00341 {
00342 FIO_IODIMM_HISTORY_TYPE_UNKNOWN = 0,
00343 FIO_IODIMM_HISTORY_TYPE_CAPACITY = 1,
00344 FIO_IODIMM_HISTORY_TYPE_PHYSICAL_READS = 2,
00345 FIO_IODIMM_HISTORY_TYPE_PHYSICAL_WRITES = 3,
00346 FIO_IODIMM_HISTORY_TYPE_FPGA_TEMPERATURE = 5,
00347 FIO_IODIMM_HISTORY_TYPE_BOARD_TEMPERATURE = 6,
00348 FIO_IODIMM_HISTORY_TYPE_MAX
00349 } fio_iodimm_history_type_t;
00350
00352 typedef struct
00353 {
00354 uint32_t lib_version;
00355 fio_iodimm_history_type_t entrytype;
00356 uint32_t size_entries;
00357 int64_t begin_timestamp;
00358 int64_t end_timestamp;
00359 uint32_t num_entries;
00360 int64_t first_timestamp;
00361 int64_t last_timestamp;
00362 uint32_t remaining;
00364 union
00365 {
00366 fio_iodimm_capacity_entry_t* capentry;
00367 fio_iodimm_usage_entry_t* usgentry;
00368 fio_iodimm_temperature_entry_t* tmpentry;
00369 } uu;
00370
00371 int64_t origin_timestamp;
00372 } fio_iodimm_history_table_t;
00373
00375 typedef struct fio_iodimm_usage
00376 {
00377 uint32_t lib_version;
00378 uint64_t total_logical_bytes_written;
00379 uint64_t total_logical_bytes_read;
00380 uint64_t session_write_ops;
00381 uint64_t session_read_ops;
00382
00383 uint64_t total_physical_bytes_written;
00384 uint64_t total_physical_bytes_read;
00385
00386 uint64_t current_ram_usage_bytes;
00387 uint64_t high_ram_usage_bytes;
00388 } fio_iodimm_usage_t;
00389
00391 typedef struct fio_iodimm_temperature_setpoints
00392 {
00393 uint32_t lib_version;
00394 int8_t high_c;
00395 int8_t low_c;
00396
00397 int8_t warn_c;
00398 } fio_iodimm_temperature_setpoints_t;
00399
00401 typedef enum fio_iodimm_led_status
00402 {
00403 FIO_IODIMM_LED_STATUS_OFF = 0,
00404 FIO_IODIMM_LED_STATUS_ON = 1,
00405 FIO_IODIMM_LED_STATUS_BLINK = 2
00406 } fio_iodimm_led_status_t;
00407
00409 typedef struct fio_led_status
00410 {
00411 uint32_t lib_version;
00412 fio_iodimm_led_status_t red;
00413 fio_iodimm_led_status_t yellow;
00414 fio_iodimm_led_status_t green;
00415 fio_iodimm_led_status_t external;
00416
00417 uint8_t yellow_duty_percent;
00418 uint16_t yellow_period_msec;
00419
00420 uint8_t green_duty_percent;
00421 uint16_t green_period_msec;
00422
00423 uint8_t extern_duty_percent;
00424 uint16_t extern_period_msec;
00425 } fio_led_status_t;
00426
00428 typedef enum
00429 {
00430 FIO_IODIMM_HEALTH_UNKNOWN = 0,
00431 FIO_IODIMM_HEALTH_HEALTHY = 1,
00432 FIO_IODIMM_HEALTH_WARNING = 2,
00433 FIO_IODIMM_HEALTH_REDUCED_WRITE = 3,
00435 FIO_IODIMM_HEALTH_READ_ONLY = 4,
00437 } fio_iodimm_health_status_t;
00438
00440 typedef struct fio_iodimm_health
00441 {
00442 uint32_t lib_version;
00443 float capacity_health_percent;
00444 fio_iodimm_health_status_t status;
00445 } fio_iodimm_health_t;
00446
00448 typedef struct fio_iodimm_device_identifiers
00449 {
00450 uint32_t lib_version;
00451 char dev_name[FIO_IODIMM_DEVICE_NAME_SIZE];
00452 char blkdev_name[FIO_IODIMM_BLK_DEV_NAME_SIZE];
00454 char label[FIO_IODIMM_LABEL_SIZE];
00455 } fio_iodimm_device_identifiers_t;
00456
00458 typedef struct fio_iodimm_static_format_info
00459 {
00460 uint32_t lib_version;
00461 uint64_t max_format_size_mb;
00463
00464 uint32_t default_sector_size_bytes;
00465 uint32_t min_sector_size_bytes;
00466 uint32_t max_sector_size_bytes;
00467 uint8_t power_of_two_sector_size;
00468 uint32_t sector_size_multiplier;
00470
00471 uint8_t disallow_overformat;
00473
00474 uint8_t nv_data_scan_skipped;
00475 uint8_t odometer_reset;
00477 } fio_iodimm_static_format_info_t;
00478
00480 typedef struct fio_iodimm_format_sizes
00481 {
00482 uint32_t lib_version;
00483 uint32_t sector_size_bytes;
00485 uint64_t max_format_size_mibytes;
00487 uint64_t default_format_size_mibytes;
00489
00490 uint8_t disallow_overformat;
00491 } fio_iodimm_format_sizes_t;
00492
00494 typedef struct fio_iodimm_dynamic_format_info
00495 {
00496 uint32_t lib_version;
00497 uint64_t cur_format_size_mb;
00498
00499 uint16_t format_version;
00500 uint64_t blockdev_num_sectors;
00501 uint32_t sector_size_bytes;
00502 char format_uuid[FIO_IODIMM_UUID_SIZE];
00503 } fio_iodimm_dynamic_format_info_t;
00504
00506 typedef struct fio_iodimm_driver_ver_info
00507 {
00508 uint32_t lib_version;
00509 char version[FIO_DRIVER_VER_SIZE];
00510
00511 uint32_t major;
00512 uint32_t minor;
00513 uint32_t micro;
00514 uint32_t build;
00515 } fio_iodimm_driver_ver_info_t;
00516
00518 typedef struct fio_iodimm_alt_info
00519 {
00520 uint32_t lib_version;
00521 char alt_part_num[FIO_IODIMM_ALT_PART_NUM_SIZE];
00522 } fio_iodimm_alt_info_t;
00523
00525 typedef struct fio_firmware_barrier
00526 {
00527 uint32_t lib_version;
00528 fio_firmware_version_t current;
00529 fio_firmware_version_t barrier;
00530 fio_iodimm_driver_ver_info_t driver;
00531 } fio_firmware_barrier_t;
00532
00534 typedef struct fio_iodimm_settings
00535 {
00536 uint32_t lib_version;
00537 uint8_t is_preallocation_enabled;
00538 } fio_iodimm_settings_t;
00539
00541 typedef struct fio_iodimm_temperatures
00542 {
00543 uint32_t lib_version;
00544 uint8_t ambient_temp_c;
00545 uint8_t engine_temp_c;
00546 } fio_iodimm_temperatures_t;
00547
00548
00549
00550
00552 typedef struct fio_iodimm_attach_req2
00553 {
00554 uint32_t lib_version;
00555
00556 } fio_iodimm_attach_req2_t;
00557
00559 typedef enum {
00560 FIO_IODIMM_ATTACH_SUCCESS = 0,
00561 FIO_IODIMM_ATTACH_DEVICE_NOT_FOUND = 1,
00562 FIO_IODIMM_ATTACH_IMPROPER_VERSION = 2,
00563 FIO_IODIMM_ATTACH_NO_EBMAP = 3,
00564 FIO_IODIMM_ATTACH_FAILED = 4,
00565 FIO_IODIMM_ATTACH_FAILED_PERM = 5,
00566 FIO_IODIMM_ATTACH_FAILED_ALREADY_ATTACHED = 6,
00567 FIO_IODIMM_ATTACH_FAILED_NOT_IMPLEMENTED = 7,
00568 FIO_IODIMM_ATTACH_PCI_UNSUPPORTED = 8,
00569 FIO_IODIMM_ATTACH_INVALID_INPUT = 9
00570 } fio_iodimm_attach_status_t;
00571
00572
00573
00574
00576 typedef enum
00577 {
00578 FIO_IODIMM_DETACH_NORMAL = 0xA,
00579 FIO_IODIMM_DETACH_IMMEDIATE = 0xB,
00581 } fio_iodimm_detach_method_t;
00582
00584 typedef struct fio_iodimm_detach_req2
00585 {
00586 uint32_t lib_version;
00587 fio_iodimm_detach_method_t detach_method;
00588 uint8_t force_detach;
00589 } fio_iodimm_detach_req2_t;
00590
00592 typedef enum {
00593 FIO_IODIMM_DETACH_SUCCESS = 0,
00594 FIO_IODIMM_DETACH_METHOD_NOT_SPECIFIED = 1,
00595 FIO_IODIMM_DETACH_DEVICE_NOT_FOUND = 2,
00596 FIO_IODIMM_DETACH_FAILED = 3,
00597 FIO_IODIMM_DETACH_FAILED_DEVICE_BUSY = 4,
00599 FIO_IODIMM_DETACH_FAILED_PERM = 5,
00600 FIO_IODIMM_DETACH_FAILED_ALREADY_DETACHED = 6,
00601 FIO_IODIMM_DETACH_FAILED_NOT_IMPLEMENTED = 7,
00602 FIO_IODIMM_DETACH_PCI_UNSUPPORTED = 8,
00603 FIO_IODIMM_DETACH_INVALID_INPUT = 9
00604 } fio_iodimm_detach_status_t;
00605
00606
00607
00608
00610 typedef struct fio_iodimm_update_req2
00611 {
00612 uint32_t lib_version;
00613 const char* fff_file_path;
00615 char force;
00617 char pretend;
00619 } fio_iodimm_update_req2_t;
00620
00623
00624
00625
00626
00627
00628 typedef enum {
00629 FIO_IODIMM_UPDATE_SUCCESS = 0,
00630 FIO_IODIMM_UPDATE_DEVICE_NOT_FOUND = 1,
00631 FIO_IODIMM_UPDATE_FFF_FILE_NOT_FOUND = 2,
00632 FIO_IODIMM_UPDATE_FFF_PART_NOT_FOUND = 3,
00634 FIO_IODIMM_UPDATE_INVALID_FFF_FORMAT = 4,
00635 FIO_IODIMM_UPDATE_EEPROM_READ_FAIL = 5,
00636 FIO_IODIMM_UPDATE_FIRMWARE_READ_FAIL = 6,
00638 FIO_IODIMM_UPDATE_OLD_VERSION = 7,
00640 FIO_IODIMM_UPDATE_CUR_VERSION = 8,
00642 FIO_IODIMM_UPDATE_DRIVER_INVALID_STATE = 9,
00644 FIO_IODIMM_UPDATE_FAILURE = 10,
00645 FIO_IODIMM_UPDATE_FAILURE_PERM = 11,
00646 FIO_IODIMM_UPDATE_IOCTL_LOCK_FAILURE = 12,
00647 FIO_IODIMM_UPDATE_SUCCESS_COLD_REBOOT = 13,
00648 FIO_IODIMM_UPDATE_NOT_IMPLEMENTED = 14,
00649 FIO_IODIMM_UPDATE_SUCCESS_NO_REBOOT = 15,
00650 FIO_IODIMM_UPDATE_SMP_NO_BOOTMODE = 16,
00651 FIO_IODIMM_UPDATE_SMP_NO_SMP = 17,
00652 FIO_IODIMM_UPDATE_SMP_FAILURE = 18,
00653 FIO_IODIMM_UPDATE_INVALID_INPUT = 19,
00655 FIO_IODIMM_UPDATE_UNSAFE = 20,
00657 FIO_IODIMM_UPDATE_ECC_MISMATCH = 21,
00658 FIO_IODIMM_UPDATE_ECC_ERROR = 22
00659 } fio_iodimm_update_status_t;
00660
00662 typedef struct fio_iodimm_fff_ver_req2
00663 {
00664 uint32_t lib_version;
00665 const char* fff_file_path;
00666 } fio_iodimm_fff_ver_req2_t;
00667
00669 typedef enum {
00670 FIO_IODIMM_FFF_VER_SUCCESS = 0,
00671 FIO_IODIMM_FFF_VER_DEVICE_NOT_FOUND = 1,
00672 FIO_IODIMM_FFF_VER_FFF_FILE_NOT_FOUND = 2,
00673 FIO_IODIMM_FFF_VER_PART_NOT_FOUND = 3,
00675 FIO_IODIMM_FFF_VER_INVALID_FFF_FORMAT = 4,
00676 FIO_IODIMM_FFF_VER_READ_FAIL = 5,
00677 FIO_IODIMM_FFF_VER_NOT_IMPLEMENTED = 6,
00678 FIO_IODIMM_FFF_VER_INVALID_INPUT = 7
00679 } fio_iodimm_fff_ver_status_t;
00680
00681
00682
00683
00685 typedef enum
00686 {
00687 FIO_IODIMM_FORMAT_NORMAL = 0xA,
00688 FIO_IODIMM_FORMAT_QUIT_ON_ERR = 0xB
00691 } fio_iodimm_format_method_t;
00692
00694 typedef enum
00695 {
00696 FIO_IODIMM_FORMAT_USER_DEFINED_SIZE_MB = 0xA,
00697 FIO_IODIMM_FORMAT_USER_DEFINED_SIZE_PCT = 0xB,
00698 FIO_IODIMM_FORMAT_DEFAULT_SIZE = 0xC
00699 } fio_iodimm_format_size_mode_t;
00700
00702 typedef struct fio_iodimm_format_req2
00703 {
00704 uint32_t lib_version;
00705 fio_iodimm_format_method_t format_method;
00706 uint8_t force;
00712 uint64_t size_value;
00717 fio_iodimm_format_size_mode_t size_mode;
00718 uint32_t sector_size_bytes;
00719 uint32_t packet_head_bytes;
00720 int8_t fixed_percent_limit;
00722 } fio_iodimm_format_req2_t;
00723
00724 typedef enum
00725 {
00726 FIO_IODIMM_FORMAT_SUCCESS = 0,
00727 FIO_IODIMM_FORMAT_METHOD_NOT_SPECIFIED = 1,
00728 FIO_IODIMM_FORMAT_INVALID_DRIVE_SIZE = 2,
00729 FIO_IODIMM_FORMAT_FAIL_GOOD_D_LEB = 3,
00730 FIO_IODIMM_FORMAT_FAIL_GOOD_MD_LEB = 4,
00731 FIO_IODIMM_FORMAT_FAIL_OPEN_CHANNEL = 5,
00733 FIO_IODIMM_FORMAT_FAIL_LOCK_CHANNEL = 6,
00735 FIO_IODIMM_FORMAT_QUIT_ON_ERR_BAD_LEB = 7,
00736 FIO_IODIMM_FORMAT_DEVICE_NOT_FOUND = 8,
00737 FIO_IODIMM_FORMAT_FAILURE = 9,
00738 FIO_IODIMM_FORMAT_FAILURE_NO_EBMAP = 10,
00740 FIO_IODIMM_FORMAT_FAIL_NOMEM = 11,
00741 FIO_IODIMM_FORMAT_FIXED_PCT_VIOLATED = 14,
00743 FIO_IODIMM_FORMAT_NOT_IMPLEMENTED = 15,
00744 FIO_IODIMM_FORMAT_INVALID_SS_MIN = 16,
00745 FIO_IODIMM_FORMAT_INVALID_SS_MAX = 17,
00746 FIO_IODIMM_FORMAT_INVALID_SS_PWR2 = 18,
00747 FIO_IODIMM_FORMAT_INVALID_SS_MULT = 19,
00748 FIO_IODIMM_FORMAT_PCI_UNSUPPORTED = 20,
00749 FIO_IODIMM_FORMAT_INVALID_INPUT = 21,
00750 FIO_IODIMM_FORMAT_FAILED_PERM = 22,
00751 FIO_IODIMM_FORMAT_NO_NV_DATA = 23,
00753 } fio_iodimm_format_status_t;
00754
00755
00756
00757
00759 typedef struct fio_iodimm_prealloc_req
00760 {
00761 uint32_t lib_version;
00762 uint8_t enabled;
00765 } fio_iodimm_prealloc_req_t;
00766
00768 typedef enum {
00769 FIO_IODIMM_PREALLOC_SUCCESS = 0,
00770 FIO_IODIMM_PREALLOC_DEVICE_NOT_FOUND = 1,
00771 FIO_IODIMM_PREALLOC_FAILED = 2,
00772 FIO_IODIMM_PREALLOC_FAILED_PERM = 3,
00773 FIO_IODIMM_PREALLOC_FAILED_NOT_IMPLEMENTED = 4,
00774 FIO_IODIMM_PREALLOC_FAILED_NOT_INITIALIZED = 5,
00775 FIO_IODIMM_PREALLOC_INVALID_INPUT = 6
00776 } fio_iodimm_prealloc_status_t;
00777
00779 typedef struct fio_iodimm_prealloc_info
00780 {
00781 uint32_t lib_version;
00782 uint64_t prealloc_memory_mib;
00783 } fio_iodimm_prealloc_info_t;
00784
00785
00786
00787
00788
00789
00790
00791 #if FIO_SDK_DEPRECATED == 1
00792
00800 typedef struct fio_iodimm_selector_pre_sdk3
00801 {
00802 uint32_t lib_version;
00803 fio_iodimm_selector_mode mode;
00804 int index;
00805 const char* device_name;
00806 void* device_handle;
00807 } fio_iodimm_selector_pre_sdk3_t;
00808
00809
00817 typedef struct fio_progress_callback
00818 {
00819 uint64_t id;
00821 fio_cb_fn_t callback;
00822 clock_t callback_period_ms;
00823 void* context;
00825 } fio_progress_callback_t;
00826
00827
00828
00830 typedef struct fio_iodimm_attach_req
00831 {
00832 uint32_t lib_version;
00833 fio_iodimm_selector_pre_sdk3_t device;
00834 fio_progress_callback_t* callback;
00836 } fio_iodimm_attach_req_t;
00837
00839 typedef struct fio_iodimm_attach_rsp
00840 {
00841 fio_iodimm_attach_status_t status;
00842 } fio_iodimm_attach_rsp_t;
00843
00845 typedef struct fio_iodimm_detach_req
00846 {
00847 uint32_t lib_version;
00848 fio_iodimm_selector_pre_sdk3_t device;
00849 fio_iodimm_detach_method_t detach_method;
00850 fio_progress_callback_t* callback;
00851 uint8_t force_detach;
00852 } fio_iodimm_detach_req_t;
00853
00855 typedef struct fio_iodimm_detach_rsp
00856 {
00857 fio_iodimm_detach_status_t status;
00858 } fio_iodimm_detach_rsp_t;
00859
00861 typedef struct fio_iodimm_update_req
00862 {
00863 uint32_t lib_version;
00864 fio_iodimm_selector_pre_sdk3_t device;
00865 const char* fff_file_path;
00867 char force;
00869 fio_progress_callback_t* callback;
00870 char pretend;
00872 } fio_iodimm_update_req_t;
00873
00875 typedef struct fio_iodimm_update_rsp
00876 {
00877 fio_iodimm_update_status_t status;
00878 } fio_iodimm_update_rsp_t;
00879
00883 typedef struct fio_iodimm_format_size_selector
00884 {
00885 uint64_t size;
00890 fio_iodimm_format_size_mode_t mode;
00891 } fio_iodimm_format_size_selector_t;
00892
00894 typedef struct fio_iodimm_format_req
00895 {
00896 uint32_t lib_version;
00897 fio_iodimm_selector_pre_sdk3_t device;
00898 fio_iodimm_format_method_t format_method;
00899 fio_iodimm_format_size_selector_t size_selector;
00900 fio_progress_callback_t* callback;
00901 uint8_t force;
00905 uint8_t make_new;
00906 uint32_t sector_size_bytes;
00907 uint32_t packet_head_bytes;
00908 } fio_iodimm_format_req_t;
00909
00911 typedef struct fio_iodimm_format_rsp
00912 {
00913 fio_iodimm_format_status_t status;
00914 int8_t fixed_percent_limit;
00916 } fio_iodimm_format_rsp_t;
00917
00919 typedef struct fio_iodimm_fff_ver_req
00920 {
00921 uint32_t lib_version;
00922 fio_iodimm_selector_pre_sdk3_t device;
00923 const char* fff_file_path;
00924 } fio_iodimm_fff_ver_req_t;
00925
00927 typedef struct fio_iodimm_fff_ver_rsp
00928 {
00929 fio_iodimm_fff_ver_status_t status;
00930 fio_firmware_version_t firmware_ver;
00931 } fio_iodimm_fff_ver_rsp_t;
00932
00933 #endif
00934
00935 #ifdef __cplusplus
00936 }
00937 #endif
00938
00939 #endif