void loop_handler(pt_loop_t * loop, event_t * event, void * user_data) { traceroute_event_t * traceroute_event; const traceroute_options_t * traceroute_options; const traceroute_data_t * traceroute_data; mda_event_t * mda_event; mda_data_t * mda_data; const char * algorithm_name; switch (event->type) { case ALGORITHM_HAS_TERMINATED: algorithm_name = event->issuer->algorithm->name; if (strcmp(algorithm_name, "mda") == 0) { mda_data = event->issuer->data; printf("Lattice:\n"); lattice_dump(mda_data->lattice, (ELEMENT_DUMP) mda_lattice_elt_dump); printf("\n"); mda_data_free(mda_data); } // Tell to the algorithm it can free its data pt_stop_instance(loop, event->issuer); // Kill the loop pt_loop_terminate(loop); break; case ALGORITHM_EVENT: algorithm_name = event->issuer->algorithm->name; if (strcmp(algorithm_name, "mda") == 0) { mda_event = event->data; traceroute_options = event->issuer->options; // mda_options inherits traceroute_options switch (mda_event->type) { case MDA_NEW_LINK: mda_link_dump(mda_event->data, traceroute_options->do_resolv); break; default: break; } } else if (strcmp(algorithm_name, "traceroute") == 0) { traceroute_event = event->data; traceroute_options = event->issuer->options; traceroute_data = event->issuer->data; // Forward this event to the default traceroute handler // See libparistraceroute/algorithms/traceroute.c traceroute_handler(loop, traceroute_event, traceroute_options, traceroute_data); } break; default: break; } event_free(event); }
/* * fpga_dump * generic multiplexing code */ int fpga_dump(int devnum, const void *buf, size_t bsize) { int ret_val = FPGA_FAIL; /* assume failure */ const fpga_desc *desc = fpga_validate(devnum, buf, bsize, (char *)__func__); if (desc) { switch (desc->devtype) { case fpga_xilinx: #if defined(CONFIG_FPGA_XILINX) ret_val = xilinx_dump(desc->devdesc, buf, bsize); #else fpga_no_sup((char *)__func__, "Xilinx devices"); #endif break; case fpga_altera: #if defined(CONFIG_FPGA_ALTERA) ret_val = altera_dump(desc->devdesc, buf, bsize); #else fpga_no_sup((char *)__func__, "Altera devices"); #endif break; case fpga_lattice: #if defined(CONFIG_FPGA_LATTICE) ret_val = lattice_dump(desc->devdesc, buf, bsize); #else fpga_no_sup((char *)__func__, "Lattice devices"); #endif break; default: printf("%s: Invalid or unsupported device type %d\n", __func__, desc->devtype); } } return ret_val; }