void rge_pkt_dump(rge_t *rgep, rge_bd_t *hrbdp, sw_rbd_t *srbdp, const char *msg) { rge_problem(rgep, "driver-detected hardware error: %s", msg); minidump(rgep, "hardware descriptor", hrbdp, sizeof (*hrbdp)); rge_log(rgep, "PCI address %lx flags_len 0x%x" "vlan_tag 0x%x", hrbdp->host_buf_addr, hrbdp->flags_len, hrbdp->vlan_tag); if (srbdp != NULL) { minidump(rgep, "software descriptor", srbdp, sizeof (*srbdp)); rge_log(rgep, "PCI address %llx buffer len 0x%x token 0x%x", srbdp->rx_buf->pbuf.cookie.dmac_laddress, srbdp->rx_buf->pbuf.alength, srbdp->rx_buf->pbuf.token); minidump(rgep, "packet data", srbdp->rx_buf->pbuf.mem_va, hrbdp->flags_len & RBD_LEN_MASK); } }
bool GenericDumper::doDump(DumpParam* param) { // 하나라도 성공하면 그냥 넘어간다. bool stopSearch = false; if (prevCallback_ != NULL) { prevCallback_(param); } DumpMinidump minidump(getDumpFolder(), getPrefix()); if (minidump.dump(param) == true) { stopSearch = true; } DumpReporter reporter(getDumpFolder(), getPrefix()); if (reporter.dump(param) == true) { stopSearch = true; } if (postCallback_ != NULL) { postCallback_(param); } return stopSearch; }