int add_mic_status( dynamic_string *status) { COIENGINE engine[MAX_ENGINES]; uint32_t num_engines = 0; uint32_t i; struct COI_ENGINE_INFO mic_stat[MAX_ENGINES]; if (COIEngineGetCount(COI_ISA_MIC, &num_engines) != COI_SUCCESS) { log_err(-1, __func__, "Mics are present but apparently not configured correctly - can't get count"); return(PBSE_SYSTEM); } copy_to_end_of_dynamic_string(status, START_MIC_STATUS); for (i = 0; i < num_engines; i++) { if (COIEngineGetHandle(COI_ISA_MIC, i, &engine[i]) != COI_SUCCESS) { snprintf(log_buffer, sizeof(log_buffer), "Can't get handle for mic index %d", (int)i); log_err(-1, __func__, log_buffer); copy_to_end_of_dynamic_string(status, END_MIC_STATUS); return(PBSE_SYSTEM); } if (COIEngineGetInfo(engine[i], sizeof(struct COI_ENGINE_INFO), &mic_stat[i]) != COI_SUCCESS) { snprintf(log_buffer, sizeof(log_buffer), "Can't get information for mic index %d", (int)i); log_err(-1, __func__, log_buffer); copy_to_end_of_dynamic_string(status, END_MIC_STATUS); return(PBSE_SYSTEM); } add_single_mic_info(status, &mic_stat[i]); } copy_to_end_of_dynamic_string(status, END_MIC_STATUS); return(PBSE_NONE); } /* END add_mic_status() */
int add_mic_status( dynamic_string *status) { COIENGINE engine[MAX_ENGINES]; uint32_t num_engines = 0; uint32_t i; struct COI_ENGINE_INFO mic_stat[MAX_ENGINES]; #ifdef NUMA_SUPPORT /* does this node board have mics configured? */ if (node_boards[numa_index].mic_end_index < 0) return(PBSE_NONE); #endif if (COIEngineGetCount(COI_ISA_MIC, &num_engines) != COI_SUCCESS) { log_err(-1, __func__, "Mics are present but apparently not configured correctly - can't get count"); return(PBSE_SYSTEM); } copy_to_end_of_dynamic_string(status, START_MIC_STATUS); #ifdef NUMA_SUPPORT if (num_engines < node_boards[numa_index].mic_end_index) { snprintf(log_buffer, sizeof(log_buffer), "node board %d is supposed to have mic range %d-%d but there are only %d mics", numa_index, node_boards[numa_index].mic_start_index, node_boards[numa_index].mic_end_index, num_engines); log_err(-1, __func__, log_buffer); return(PBSE_SYSTEM); } for (i = node_boards[numa_index].mic_start_index; i <= node_boards[numa_index].mic_end_index; i++) #else for (i = 0; i < num_engines; i++) #endif { if (COIEngineGetHandle(COI_ISA_MIC, i, &engine[i]) != COI_SUCCESS) { snprintf(log_buffer, sizeof(log_buffer), "Can't get handle for mic index %d", (int)i); log_err(-1, __func__, log_buffer); copy_to_end_of_dynamic_string(status, END_MIC_STATUS); return(PBSE_SYSTEM); } if (COIEngineGetInfo(engine[i], sizeof(struct COI_ENGINE_INFO), &mic_stat[i]) != COI_SUCCESS) { snprintf(log_buffer, sizeof(log_buffer), "Can't get information for mic index %d", (int)i); log_err(-1, __func__, log_buffer); copy_to_end_of_dynamic_string(status, END_MIC_STATUS); return(PBSE_SYSTEM); } add_single_mic_info(status, &mic_stat[i]); } copy_to_end_of_dynamic_string(status, END_MIC_STATUS); return(PBSE_NONE); } /* END add_mic_status() */
int add_mic_status( std::vector<std::string> &status) { uint32_t num_engines = 0; uint32_t i = 0; #ifdef NUMA_SUPPORT /* does this node board have mics configured? */ if (node_boards[numa_index].mic_end_index < 0) return(PBSE_NONE); #endif if (COIEngineGetCount(COI_ISA_MIC, &num_engines) != COI_SUCCESS) { log_err(-1, __func__, "Mics are present but apparently not configured correctly - can't get count"); return(PBSE_SYSTEM); } status.push_back(START_MIC_STATUS); #ifdef NUMA_SUPPORT if (num_engines < node_boards[numa_index].mic_end_index) { snprintf(log_buffer, sizeof(log_buffer), "node board %d is supposed to have mic range %d-%d but there are only %d mics", numa_index, node_boards[numa_index].mic_start_index, node_boards[numa_index].mic_end_index, num_engines); log_err(-1, __func__, log_buffer); return(PBSE_SYSTEM); } for (i = node_boards[numa_index].mic_start_index; i <= node_boards[numa_index].mic_end_index; i++) #else for (i = 0; i < num_engines; i++) #endif { COIENGINE engine; struct COI_ENGINE_INFO mic_stat; memset(&engine, 0, sizeof(engine)); memset(&mic_stat, 0, sizeof(mic_stat)); if (COIEngineGetHandle(COI_ISA_MIC, i, &engine) != COI_SUCCESS) { if (down_mics.find(i) == down_mics.end()) { snprintf(log_buffer, sizeof(log_buffer), "Can't get handle for mic index %d", (int)i); log_event(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, __func__, log_buffer); down_mics.insert(i); } continue; } if (COIEngineGetInfo(engine, sizeof(struct COI_ENGINE_INFO), &mic_stat) != COI_SUCCESS) { snprintf(log_buffer, sizeof(log_buffer), "Can't get information for mic index %d", (int)i); log_err(-1, __func__, log_buffer); continue; } add_single_mic_info(status, &mic_stat); } status.push_back(END_MIC_STATUS); return(PBSE_NONE); } /* END add_mic_status() */