⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 debug.c

📁 linux-2.6.15.6
💻 C
📖 第 1 页 / 共 5 页
字号:
          "Inc Busy                      =%lu", channel->pInterfaceStat->inc.User_Busy);        }        if (channel->pInterfaceStat->inc.Call_Rejected) {          diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,          "Inc Rejected                  =%lu", channel->pInterfaceStat->inc.Call_Rejected);        }        if (channel->pInterfaceStat->inc.Wrong_Number) {          diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,          "Inc Wrong Nr                  =%lu", channel->pInterfaceStat->inc.Wrong_Number);        }        if (channel->pInterfaceStat->inc.Incompatible_Dst) {          diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,          "Inc Incomp. Dest              =%lu", channel->pInterfaceStat->inc.Incompatible_Dst);        }        if (channel->pInterfaceStat->inc.Out_of_Order) {          diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,          "Inc Out of Order              =%lu", channel->pInterfaceStat->inc.Out_of_Order);        }        if (channel->pInterfaceStat->inc.Ignored) {          diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,          "Inc Ignored                   =%lu", channel->pInterfaceStat->inc.Ignored);        }                /*          Outgoing Statistics          */        if (channel->pInterfaceStat->outg.Calls) {          diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,          "Outg Calls                    =%lu", channel->pInterfaceStat->outg.Calls);        }        if (channel->pInterfaceStat->outg.Connected) {          diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,          "Outg Connected                =%lu", channel->pInterfaceStat->outg.Connected);        }        if (channel->pInterfaceStat->outg.User_Busy) {          diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,          "Outg Busy                     =%lu", channel->pInterfaceStat->outg.User_Busy);        }        if (channel->pInterfaceStat->outg.No_Answer) {          diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,          "Outg No Answer                =%lu", channel->pInterfaceStat->outg.No_Answer);        }        if (channel->pInterfaceStat->outg.Wrong_Number) {          diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,          "Outg Wrong Nr                 =%lu", channel->pInterfaceStat->outg.Wrong_Number);        }        if (channel->pInterfaceStat->outg.Call_Rejected) {          diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,          "Outg Rejected                 =%lu", channel->pInterfaceStat->outg.Call_Rejected);        }        if (channel->pInterfaceStat->outg.Other_Failures) {          diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,          "Outg Other Failures           =%lu", channel->pInterfaceStat->outg.Other_Failures);        }      }      break;    case DIVA_SUPER_TRACE_NOTIFY_MDM_STAT_CHANGE:      if (channel->pInterfaceStat->mdm.Disc_Normal) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "MDM Disc Normal        = %lu", channel->pInterfaceStat->mdm.Disc_Normal);      }      if (channel->pInterfaceStat->mdm.Disc_Unspecified) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "MDM Disc Unsp.         = %lu", channel->pInterfaceStat->mdm.Disc_Unspecified);      }      if (channel->pInterfaceStat->mdm.Disc_Busy_Tone) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "MDM Disc Busy Tone     = %lu", channel->pInterfaceStat->mdm.Disc_Busy_Tone);      }      if (channel->pInterfaceStat->mdm.Disc_Congestion) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "MDM Disc Congestion    = %lu", channel->pInterfaceStat->mdm.Disc_Congestion);      }      if (channel->pInterfaceStat->mdm.Disc_Carr_Wait) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "MDM Disc Carrier Wait  = %lu", channel->pInterfaceStat->mdm.Disc_Carr_Wait);      }      if (channel->pInterfaceStat->mdm.Disc_Trn_Timeout) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "MDM Disc Trn. T.o.     = %lu", channel->pInterfaceStat->mdm.Disc_Trn_Timeout);      }      if (channel->pInterfaceStat->mdm.Disc_Incompat) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "MDM Disc Incompatible  = %lu", channel->pInterfaceStat->mdm.Disc_Incompat);      }      if (channel->pInterfaceStat->mdm.Disc_Frame_Rej) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "MDM Disc Frame Reject  = %lu", channel->pInterfaceStat->mdm.Disc_Frame_Rej);      }      if (channel->pInterfaceStat->mdm.Disc_V42bis) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "MDM Disc V.42bis       = %lu", channel->pInterfaceStat->mdm.Disc_V42bis);      }      break;    case DIVA_SUPER_TRACE_NOTIFY_FAX_STAT_CHANGE:      if (channel->pInterfaceStat->fax.Disc_Normal) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "FAX Disc Normal        = %lu", channel->pInterfaceStat->fax.Disc_Normal);      }      if (channel->pInterfaceStat->fax.Disc_Not_Ident) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "FAX Disc Not Ident.    = %lu", channel->pInterfaceStat->fax.Disc_Not_Ident);      }      if (channel->pInterfaceStat->fax.Disc_No_Response) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "FAX Disc No Response   = %lu", channel->pInterfaceStat->fax.Disc_No_Response);      }      if (channel->pInterfaceStat->fax.Disc_Retries) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "FAX Disc Max Retries   = %lu", channel->pInterfaceStat->fax.Disc_Retries);      }      if (channel->pInterfaceStat->fax.Disc_Unexp_Msg) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "FAX Unexp. Msg.        = %lu", channel->pInterfaceStat->fax.Disc_Unexp_Msg);      }      if (channel->pInterfaceStat->fax.Disc_No_Polling) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "FAX Disc No Polling    = %lu", channel->pInterfaceStat->fax.Disc_No_Polling);      }      if (channel->pInterfaceStat->fax.Disc_Training) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "FAX Disc Training      = %lu", channel->pInterfaceStat->fax.Disc_Training);      }      if (channel->pInterfaceStat->fax.Disc_Unexpected) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "FAX Disc Unexpected    = %lu", channel->pInterfaceStat->fax.Disc_Unexpected);      }      if (channel->pInterfaceStat->fax.Disc_Application) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "FAX Disc Application   = %lu", channel->pInterfaceStat->fax.Disc_Application);      }      if (channel->pInterfaceStat->fax.Disc_Incompat) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "FAX Disc Incompatible  = %lu", channel->pInterfaceStat->fax.Disc_Incompat);      }      if (channel->pInterfaceStat->fax.Disc_No_Command) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "FAX Disc No Command    = %lu", channel->pInterfaceStat->fax.Disc_No_Command);      }      if (channel->pInterfaceStat->fax.Disc_Long_Msg) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "FAX Disc Long Msg.     = %lu", channel->pInterfaceStat->fax.Disc_Long_Msg);      }      if (channel->pInterfaceStat->fax.Disc_Supervisor) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "FAX Disc Supervisor    = %lu", channel->pInterfaceStat->fax.Disc_Supervisor);      }      if (channel->pInterfaceStat->fax.Disc_SUB_SEP_PWD) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "FAX Disc SUP SEP PWD   = %lu", channel->pInterfaceStat->fax.Disc_SUB_SEP_PWD);      }      if (channel->pInterfaceStat->fax.Disc_Invalid_Msg) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "FAX Disc Invalid Msg.  = %lu", channel->pInterfaceStat->fax.Disc_Invalid_Msg);      }      if (channel->pInterfaceStat->fax.Disc_Page_Coding) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "FAX Disc Page Coding   = %lu", channel->pInterfaceStat->fax.Disc_Page_Coding);      }      if (channel->pInterfaceStat->fax.Disc_App_Timeout) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "FAX Disc Appl. T.o.    = %lu", channel->pInterfaceStat->fax.Disc_App_Timeout);      }      if (channel->pInterfaceStat->fax.Disc_Unspecified) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,        "FAX Disc Unspec.       = %lu", channel->pInterfaceStat->fax.Disc_Unspecified);      }      break;  }}/*  Receive trace information from the Management Interface and store it in the  internal trace buffer with MSG_TYPE_MLOG as is, without any filtering.  Event Filtering and formatting is done in  Management Interface self.  */static void diva_maint_trace_notify (void* user_context,                                     diva_strace_library_interface_t* hLib,                                     int Adapter,                                     void* xlog_buffer,                                     int length) {  diva_maint_client_t* pC = (diva_maint_client_t*)user_context;  diva_dbg_entry_head_t* pmsg;  word size;  dword sec, usec;  int ch = TraceFilterChannel;  int id = TraceFilterIdent;  /*    Selective trace    */  if ((id >= 0) && (ch >= 0) && (id < sizeof(clients)/sizeof(clients[0])) &&      (clients[id].Dbg.id == (byte)id) && (clients[id].pIdiLib == hLib)) {    const char* p = NULL;    int ch_value = -1;    MI_XLOG_HDR *TrcData = (MI_XLOG_HDR *)xlog_buffer;    if (Adapter != clients[id].logical) {      return; /* Ignore all trace messages from other adapters */    }    if (TrcData->code == 24) {      p = (char*)&TrcData->code;      p += 2;    }    /*      All L1 messages start as [dsp,ch], so we can filter this information      and filter out all messages that use different channel      */    if (p && p[0] == '[') {      if (p[2] == ',') {        p += 3;        ch_value = *p - '0';      } else if (p[3] == ',') {        p += 4;        ch_value = *p - '0';      }      if (ch_value >= 0) {        if (p[2] == ']') {          ch_value = ch_value * 10 + p[1] - '0';        }        if (ch_value != ch) {          return; /* Ignore other channels */        }      }    }	} else if (TraceFilter[0] != 0) {    return; /* Ignore trace if trace filter is activated, but idle */  }  diva_os_get_time (&sec, &usec);  while (!(pmsg = (diva_dbg_entry_head_t*)queueAllocMsg (dbg_queue,                              (word)length+sizeof(*pmsg)))) {    if ((pmsg = (diva_dbg_entry_head_t*)queuePeekMsg (dbg_queue, &size))) {      queueFreeMsg (dbg_queue);    } else {      break;    }  }  if (pmsg) {    memcpy (&pmsg[1], xlog_buffer, length);    pmsg->sequence    = dbg_sequence++;    pmsg->time_sec    = sec;    pmsg->time_usec   = usec;    pmsg->facility    = MSG_TYPE_MLOG;    pmsg->dli         = pC->logical;    pmsg->drv_id      = pC->hDbg->id;    pmsg->di_cpu      = 0;    pmsg->data_length = length;    queueCompleteMsg (pmsg);    if (queueCount(dbg_queue)) {      diva_maint_wakeup_read();    }  }}/*  Convert MAINT trace mask to management interface trace mask/work/facility and  issue command to management interface  */static void diva_change_management_debug_mask (diva_maint_client_t* pC, dword old_mask) {  if (pC->request && pC->hDbg && pC->pIdiLib) {    dword changed = pC->hDbg->dbgMask ^ old_mask;    if (changed & DIVA_MGT_DBG_TRACE) {      (*(pC->pIdiLib->DivaSTraceSetInfo))(pC->pIdiLib,                                          (pC->hDbg->dbgMask & DIVA_MGT_DBG_TRACE) != 0);    }    if (changed & DIVA_MGT_DBG_DCHAN) {      (*(pC->pIdiLib->DivaSTraceSetDChannel))(pC->pIdiLib,                                              (pC->hDbg->dbgMask & DIVA_MGT_DBG_DCHAN) != 0);    }    if (!TraceFilter[0]) {      if (changed & DIVA_MGT_DBG_IFC_BCHANNEL) {        int i, state = ((pC->hDbg->dbgMask & DIVA_MGT_DBG_IFC_BCHANNEL) != 0);        for (i = 0; i < pC->channels; i++) {          (*(pC->pIdiLib->DivaSTraceSetBChannel))(pC->pIdiLib, i+1, state);        }      }      if (changed & DIVA_MGT_DBG_IFC_AUDIO) {        int i, state = ((pC->hDbg->dbgMask & DIVA_MGT_DBG_IFC_AUDIO) != 0);        for (i = 0; i < pC->channels; i++) {          (*(pC->pIdiLib->DivaSTraceSetAudioTap))(pC->pIdiLib, i+1, state);        }      }    }  }}void diva_mnt_internal_dprintf (dword drv_id, dword type, char* fmt, ...) {  va_list ap;	va_start(ap, fmt);  DI_format (0, (word)drv_id, (int)type, fmt, ap);	va_end(ap);}/*  Shutdown all adapters before driver removal  */int diva_mnt_shutdown_xdi_adapters (void) {  diva_os_spin_lock_magic_t old_irql, old_irql1;  int i, fret = 0;  byte * pmem;  for (i = 1; i < (sizeof(clients)/sizeof(clients[0])); i++) {    pmem = NULL;    diva_os_enter_spin_lock (&dbg_adapter_lock, &old_irql1, "unload");    diva_os_enter_spin_lock (&dbg_q_lock, &old_irql, "unload");    if (clients[i].hDbg && clients[i].pIdiLib && clients[i].request) {      if ((*(clients[i].pIdiLib->DivaSTraceLibraryStop))(clients[i].pIdiLib) == 1) {        /*          Adapter removal complete          */        if (clients[i].pIdiLib) {          (*(clients[i].pIdiLib->DivaSTraceLibraryFinit))(clients[i].pIdiLib->hLib);          clients[i].pIdiLib = NULL;          pmem = clients[i].pmem;          clients[i].pmem = NULL;        }        clients[i].hDbg    = NULL;        clients[i].request_pending = 0;        if (clients[i].dma_handle >= 0) {          /*            Free DMA handle            */          diva_free_dma_descriptor (clients[i].request, clients[i].dma_handle);          clients[i].dma_handle = -1;				}        clients[i].request = NULL;      } else {        fret = -1;      }    }    diva_os_leave_spin_lock (&dbg_q_lock, &old_irql, "unload");    if (clients[i].hDbg && clients[i].pIdiLib && clients[i].request && clients[i].request_pending) {      clients[i].request_pending = 0;      (*(clients[i].request))((ENTITY*)(*(clients[i].pIdiLib->DivaSTraceGetHandle))(clients[i].pIdiLib->hLib));      if (clients[i].dma_handle >= 0) {        diva_free_dma_descriptor (clients[i].request, clients[i].dma_handle);        clients[i].dma_handle = -1;      }    }    diva_os_leave_spin_lock (&dbg_adapter_lock, &old_irql1, "unload");    if (pmem) {      diva_os_free (0, pmem);    }  }  return (fret);}/*  Set/Read the trace filter used for selective tracing.  Affects B- and Audio Tap trace mask at run time  */int diva_set_trace_filter (int filter_length, const char* filter) {  diva_os_spin_lock_magic_t old_irql, old_irql1;  int i, ch, on, client_b_on, client_atap_on;  diva_os_enter_spin_lock (&dbg_adapter_lock, &old_irql1, "dbg mask");  diva_os_enter_spin_lock (&dbg_q_lock, &old_irql, "write_filter");  if (filter_length <= DIVA_MAX_SELECTIVE_FILTER_LENGTH) {    memcpy (&TraceFilter[0], filter, filter_length);    if (TraceFilter[filter_length]) {      TraceFilter[filter_length] = 0;    }    if (TraceFilter[0] == '*') {      TraceFilter[0] = 0;    }  } else {    filter_length = -1;  }  TraceFilterIdent   = -1;  TraceFilterChannel = -1;  on = (TraceFilter[0] == 0);  for (i = 1; i < (sizeof(clients)/sizeof(clients[0])); i++) {    if (clients[i].hDbg && clients[i].pIdiLib && clients[i].request) {      client_b_on    = on && ((clients[i].hDbg->dbgMask & DIVA_MGT_DBG_IFC_BCHANNEL) != 0);      client_atap_on = on && ((cli

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -