void MESI_protocol::process_cache_request (Mreq *request) { if (DEBUG) { switch (state) { case MESI_CACHE_I: printf("PI"); do_cache_I (request); break; case MESI_CACHE_S: printf("PS"); do_cache_S (request); break; case MESI_CACHE_E: printf("PE"); do_cache_E (request); break; case MESI_CACHE_M: printf("PM"); do_cache_M (request); break; case MESI_CACHE_IM: printf("PIM"); do_cache_IM (request); break; case MESI_CACHE_IS: printf("PIS"); do_cache_IS (request); break; case MESI_CACHE_SM: printf("PSM"); do_cache_SM (request); break; default: fatal_error ("Invalid Cache State for MESI Protocol\n"); } } else { switch (state) { case MESI_CACHE_I: do_cache_I (request); break; case MESI_CACHE_S: do_cache_S (request); break; case MESI_CACHE_E: do_cache_E (request); break; case MESI_CACHE_M: do_cache_M (request); break; case MESI_CACHE_IM: do_cache_IM (request); break; case MESI_CACHE_IS: do_cache_IS (request); break; case MESI_CACHE_SM: do_cache_SM (request); break; default: fatal_error ("Invalid Cache State for MESI Protocol\n"); } } }
void MSI_protocol::process_cache_request (Mreq *request){ switch (state) { case MSI_CACHE_I: do_cache_I (request); break; case MSI_CACHE_IM: do_cache_IM (request); break; case MSI_CACHE_M: do_cache_M (request); break; case MSI_CACHE_S: do_cache_S (request); break; case MSI_CACHE_IS: do_cache_IS (request); break; case MSI_CACHE_SM: do_cache_SM (request); break; default: fatal_error ("Invalid Cache State for MSI Protocol\n"); } }
//Redirect work to the appropriate function void TYPE(_protocol)::process_cache_request (Mreq *request) { switch (state) { case TYPE(_CACHE_I): do_cache_I (request); break; case TYPE(_CACHE_S): do_cache_S (request); break; case TYPE(_CACHE_M): do_cache_M (request); break; case TYPE(_CACHE_IE): do_cache_IE (request); break; case TYPE(_CACHE_IM): do_cache_IM (request); break; case TYPE(_CACHE_SM): do_cache_SM (request); break; default: fatal_error ("Invalid Cache State for TYPE Protocol\n"); } }
void MOESI_protocol::process_cache_request (Mreq *request) { switch (state) { case MOESI_CACHE_I: do_cache_I (request); break; case MOESI_CACHE_S: do_cache_S (request); break; case MOESI_CACHE_E: do_cache_E (request); break; case MOESI_CACHE_O: do_cache_O (request); break; case MOESI_CACHE_M: do_cache_M (request); break; case MOESI_CACHE_IM_Intermediate: break; case MOESI_CACHE_IS_Intermediate: break; case MOESI_CACHE_SM_Intermediate: break; case MOESI_CACHE_OM_Intermediate: break; default: fatal_error ("Invalid Cache State for MOESI Protocol\n"); } }
void MOESIF_protocol::process_cache_request (Mreq *request) { switch (state) { case MOESIF_CACHE_I: do_cache_I (request); break; case MOESIF_CACHE_IS: do_cache_IS (request); break; case MOESIF_CACHE_S: do_cache_S (request); break; case MOESIF_CACHE_SM: do_cache_SM (request); break; case MOESIF_CACHE_E: do_cache_E (request); break; case MOESIF_CACHE_OM: do_cache_OM (request); break; case MOESIF_CACHE_IM: do_cache_IM (request); break; case MOESIF_CACHE_M: do_cache_M (request); break; case MOESIF_CACHE_O: do_cache_O (request); break; case MOESIF_CACHE_FM: do_cache_FM (request); break; case MOESIF_CACHE_F: do_cache_F (request); break; default: fatal_error ("Invalid Cache State for MOESIF Protocol\n"); } }