1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| enum { NVME_TASK = 0, BACKGROUND_TASK, ADD, SUB, };
void drv_update_task_counter(pm_dscp_p pm_dscp, u8 task_type, u8 update_opt) { if (update_opt == ADD) { pm_dscp->task_counter[task_type]++; } else if (update_opt == SUB) { if (pm_dscp->task_counter[task_type] != 0) pm_dscp->task_counter[task_type]--; else LOG(ERROR, "try to sub task_counter[%d] that is already 0\n", task_type); } }
void smart_info_emmc_rw(smart_rw_emmc_p smart_rw, smart_health_info_data_p smart_data) { u8 temp = pm.get_internalstate(&pm_dscp, ID_FW_STATUS); if (temp == 0) { pm.set_internalstate(&pm_dscp, ID_FW_STATUS, 1); } pm.update_task_counter(&pm_dscp, BACKGROUND_TASK, ADD); emmc_usersblock_readwrite(smart_rw->addr_ram, smart_rw->addr_offset, smart_rw->rw_size, smart_rw->rw_opt); if (temp == 0) { pm.set_internalstate(&pm_dscp, ID_FW_STATUS, 0); } pm.update_task_counter(&pm_dscp, BACKGROUND_TASK, SUB); }
|