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

📄 debug.c

📁 linux-2.6.15.6
💻 C
📖 第 1 页 / 共 5 页
字号:
    e->Id          = MAN_ID;    e->callback    = diva_maint_xdi_cb;    e->XNum        = 1;    e->X           = &pC->XData;    e->Req         = ASSIGN;    e->ReqCh       = 0;    e->X->PLength  = assign_data_length;    e->X->P        = (byte*)&pC->xbuffer[0];    pC->request_pending = 1;    return (0);  }  return (-1);}int SuperTraceREMOVE (void* AdapterHandle) {  diva_maint_client_t* pC = (diva_maint_client_t*)AdapterHandle;  if (pC && pC->pIdiLib && pC->request) {    ENTITY* e = (ENTITY*)(*(pC->pIdiLib->DivaSTraceGetHandle))(pC->pIdiLib->hLib);    e->XNum        = 1;    e->X           = &pC->XData;    e->Req         = REMOVE;    e->ReqCh       = 0;    e->X->PLength  = 1;    e->X->P        = (byte*)&pC->xbuffer[0];    pC->xbuffer[0] = 0;    pC->request_pending = 1;    return (0);  }  return (-1);}int SuperTraceTraceOnRequest(void* hAdapter, const char* name, byte* data) {  diva_maint_client_t* pC = (diva_maint_client_t*)hAdapter;  if (pC && pC->pIdiLib && pC->request) {    ENTITY* e = (ENTITY*)(*(pC->pIdiLib->DivaSTraceGetHandle))(pC->pIdiLib->hLib);    byte* xdata = (byte*)&pC->xbuffer[0];    char tmp = 0;    word length;    if (!strcmp(name, "\\")) { /* Read ROOT */      name = &tmp;    }    length = SuperTraceCreateReadReq (xdata, name);    single_p (xdata, &length, 0); /* End Of Message */    e->Req          = MAN_EVENT_ON;    e->ReqCh        = 0;    e->X->PLength   = length;    e->X->P			    = (byte*)xdata;    pC->request_pending = 1;    return (0);  }  return (-1);}int SuperTraceWriteVar (void* AdapterHandle,                        byte* data,                        const char* name,                        void* var,                        byte type,                        byte var_length) {  diva_maint_client_t* pC = (diva_maint_client_t*)AdapterHandle;  if (pC && pC->pIdiLib && pC->request) {    ENTITY* e = (ENTITY*)(*(pC->pIdiLib->DivaSTraceGetHandle))(pC->pIdiLib->hLib);    diva_man_var_header_t* pVar = (diva_man_var_header_t*)&pC->xbuffer[0];    word length = SuperTraceCreateReadReq ((byte*)pVar, name);    memcpy (&pC->xbuffer[length], var, var_length);    length += var_length;    pVar->length += var_length;    pVar->value_length = var_length;    pVar->type = type;    single_p ((byte*)pVar, &length, 0); /* End Of Message */    e->Req          = MAN_WRITE;    e->ReqCh			  = 0;    e->X->PLength   = length;    e->X->P			    = (byte*)pVar;    pC->request_pending = 1;    return (0);  }  return (-1);}int SuperTraceExecuteRequest (void* AdapterHandle,                              const char* name,                              byte* data) {  diva_maint_client_t* pC = (diva_maint_client_t*)AdapterHandle;  if (pC && pC->pIdiLib && pC->request) {    ENTITY* e = (ENTITY*)(*(pC->pIdiLib->DivaSTraceGetHandle))(pC->pIdiLib->hLib);    byte* xdata = (byte*)&pC->xbuffer[0];    word length;    length = SuperTraceCreateReadReq (xdata, name);    single_p (xdata, &length, 0); /* End Of Message */    e->Req          = MAN_EXECUTE;    e->ReqCh			  = 0;    e->X->PLength   = length;    e->X->P			    = (byte*)xdata;    pC->request_pending = 1;    return (0);  }  return (-1);}static word SuperTraceCreateReadReq (byte* P, const char* path) {	byte var_length;	byte* plen;	var_length = (byte)strlen (path);	*P++ = ESC;	plen = P++;	*P++ = 0x80; /* MAN_IE */	*P++ = 0x00; /* Type */	*P++ = 0x00; /* Attribute */	*P++ = 0x00; /* Status */	*P++ = 0x00; /* Variable Length */	*P++ = var_length;	memcpy (P, path, var_length);	P += var_length;	*plen = var_length + 0x06;	return ((word)(var_length + 0x08));}static void single_p (byte * P, word * PLength, byte Id) {  P[(*PLength)++] = Id;}static void diva_maint_xdi_cb (ENTITY* e) {  diva_strace_context_t* pLib = DIVAS_CONTAINING_RECORD(e,diva_strace_context_t,e);  diva_maint_client_t* pC;  diva_os_spin_lock_magic_t old_irql, old_irql1;  diva_os_enter_spin_lock (&dbg_adapter_lock, &old_irql1, "xdi_cb");  diva_os_enter_spin_lock (&dbg_q_lock, &old_irql, "xdi_cb");  pC = (diva_maint_client_t*)pLib->hAdapter;  if ((e->complete == 255) || (pC->dma_handle < 0)) {    if ((*(pLib->instance.DivaSTraceMessageInput))(&pLib->instance)) {      diva_mnt_internal_dprintf (0, DLI_ERR, "Trace internal library error");    }  } else {    /*      Process combined management interface indication      */    if ((*(pLib->instance.DivaSTraceMessageInput))(&pLib->instance)) {      diva_mnt_internal_dprintf (0, DLI_ERR, "Trace internal library error (DMA mode)");    }  }  diva_os_leave_spin_lock (&dbg_q_lock, &old_irql, "xdi_cb");	if (pC->request_pending) {    pC->request_pending = 0;    (*(pC->request))(e);	}  diva_os_leave_spin_lock (&dbg_adapter_lock, &old_irql1, "xdi_cb");}static void diva_maint_error (void* user_context,                              diva_strace_library_interface_t* hLib,                              int Adapter,                              int error,                              const char* file,                              int line) {	diva_mnt_internal_dprintf (0, DLI_ERR,                             "Trace library error(%d) A(%d) %s %d", error, Adapter, file, line);}static void print_ie (diva_trace_ie_t* ie, char* buffer, int length) {	int i;  buffer[0] = 0;  if (length > 32) {    for (i = 0; ((i < ie->length) && (length > 3)); i++) {      sprintf (buffer, "%02x", ie->data[i]);      buffer += 2;      length -= 2;      if (i < (ie->length-1)) {        strcpy (buffer, " ");        buffer++;        length--;      }    }  }}static void diva_maint_state_change_notify (void* user_context,                                            diva_strace_library_interface_t* hLib,                                            int Adapter,                                            diva_trace_line_state_t* channel,                                            int notify_subject) {  diva_maint_client_t*      pC    = (diva_maint_client_t*)user_context;  diva_trace_fax_state_t*   fax   = &channel->fax;  diva_trace_modem_state_t* modem = &channel->modem;  char tmp[256];  if (!pC->hDbg) {    return;  }  switch (notify_subject) {    case DIVA_SUPER_TRACE_NOTIFY_LINE_CHANGE: {      int view = (TraceFilter[0] == 0);      /*        Process selective Trace        */      if (channel->Line[0] == 'I' && channel->Line[1] == 'd' &&          channel->Line[2] == 'l' && channel->Line[3] == 'e') {        if ((TraceFilterIdent == pC->hDbg->id) && (TraceFilterChannel == (int)channel->ChannelNumber)) {          (*(hLib->DivaSTraceSetBChannel))(hLib, (int)channel->ChannelNumber, 0);          (*(hLib->DivaSTraceSetAudioTap))(hLib, (int)channel->ChannelNumber, 0);          diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG, "Selective Trace OFF for Ch=%d",                                     (int)channel->ChannelNumber);          TraceFilterIdent   = -1;          TraceFilterChannel = -1;          view = 1;        }      } else if (TraceFilter[0] && (TraceFilterIdent < 0) && !(diva_mnt_cmp_nmbr (&channel->RemoteAddress[0]) &&                                                               diva_mnt_cmp_nmbr (&channel->LocalAddress[0]))) {        if ((pC->hDbg->dbgMask & DIVA_MGT_DBG_IFC_BCHANNEL) != 0) { /* Activate B-channel trace */          (*(hLib->DivaSTraceSetBChannel))(hLib, (int)channel->ChannelNumber, 1);        }        if ((pC->hDbg->dbgMask & DIVA_MGT_DBG_IFC_AUDIO) != 0) { /* Activate AudioTap Trace */          (*(hLib->DivaSTraceSetAudioTap))(hLib, (int)channel->ChannelNumber, 1);        }        TraceFilterIdent   = pC->hDbg->id;        TraceFilterChannel = (int)channel->ChannelNumber;        if (TraceFilterIdent >= 0) {          diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG, "Selective Trace ON for Ch=%d",                                     (int)channel->ChannelNumber);          view = 1;        }      }      if (view && (pC->hDbg->dbgMask & DIVA_MGT_DBG_LINE_EVENTS)) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_STAT, "L Ch     = %d",                                                                     (int)channel->ChannelNumber);        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_STAT, "L Status = <%s>", &channel->Line[0]);        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_STAT, "L Layer1 = <%s>", &channel->Framing[0]);        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_STAT, "L Layer2 = <%s>", &channel->Layer2[0]);        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_STAT, "L Layer3 = <%s>", &channel->Layer3[0]);        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_STAT, "L RAddr  = <%s>",                                                                     &channel->RemoteAddress[0]);        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_STAT, "L RSAddr = <%s>",                                                                     &channel->RemoteSubAddress[0]);        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_STAT, "L LAddr  = <%s>",                                                                     &channel->LocalAddress[0]);        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_STAT, "L LSAddr = <%s>",                                                                     &channel->LocalSubAddress[0]);        print_ie(&channel->call_BC, tmp, sizeof(tmp));        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_STAT, "L BC     = <%s>", tmp);        print_ie(&channel->call_HLC, tmp, sizeof(tmp));        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_STAT, "L HLC    = <%s>", tmp);        print_ie(&channel->call_LLC, tmp, sizeof(tmp));        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_STAT, "L LLC    = <%s>", tmp);        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_STAT, "L CR     = 0x%x", channel->CallReference);        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_STAT, "L Disc   = 0x%x",                                                                    channel->LastDisconnecCause);        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_STAT, "L Owner  = <%s>", &channel->UserID[0]);      }		} break;    case DIVA_SUPER_TRACE_NOTIFY_MODEM_CHANGE:      if (pC->hDbg->dbgMask & DIVA_MGT_DBG_MDM_PROGRESS) {				{					int ch = TraceFilterChannel;					int id = TraceFilterIdent;					if ((id >= 0) && (ch >= 0) && (id < sizeof(clients)/sizeof(clients[0])) &&						(clients[id].Dbg.id == (byte)id) && (clients[id].pIdiLib == hLib)) {						if (ch != (int)modem->ChannelNumber) {							break;						}					} else if (TraceFilter[0] != 0) {						break;					}				}        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "MDM Ch    = %lu",                                                                     (int)modem->ChannelNumber);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "MDM Event = %lu",     modem->Event);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "MDM Norm  = %lu",     modem->Norm);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "MDM Opts. = 0x%08x",  modem->Options);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "MDM Tx    = %lu Bps", modem->TxSpeed);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "MDM Rx    = %lu Bps", modem->RxSpeed);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "MDM RT    = %lu mSec",                                                                     modem->RoundtripMsec);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "MDM Sr    = %lu",     modem->SymbolRate);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "MDM Rxl   = %d dBm",  modem->RxLeveldBm);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "MDM El    = %d dBm",  modem->EchoLeveldBm);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "MDM SNR   = %lu dB",  modem->SNRdb);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "MDM MAE   = %lu",     modem->MAE);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "MDM LRet  = %lu",                                                                     modem->LocalRetrains);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "MDM RRet  = %lu",                                                                     modem->RemoteRetrains);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "MDM LRes  = %lu",     modem->LocalResyncs);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "MDM RRes  = %lu",                                                                     modem->RemoteResyncs);        if (modem->Event == 3) {          diva_mnt_internal_dprintf(pC->hDbg->id,DLI_STAT,"MDM Disc  =  %lu",    modem->DiscReason);        }      }      if ((modem->Event == 3) && (pC->hDbg->dbgMask & DIVA_MGT_DBG_MDM_STATISTICS)) {        (*(pC->pIdiLib->DivaSTraceGetModemStatistics))(pC->pIdiLib);      }      break;    case DIVA_SUPER_TRACE_NOTIFY_FAX_CHANGE:      if (pC->hDbg->dbgMask & DIVA_MGT_DBG_FAX_PROGRESS) {				{					int ch = TraceFilterChannel;					int id = TraceFilterIdent;					if ((id >= 0) && (ch >= 0) && (id < sizeof(clients)/sizeof(clients[0])) &&						(clients[id].Dbg.id == (byte)id) && (clients[id].pIdiLib == hLib)) {						if (ch != (int)fax->ChannelNumber) {							break;						}					} else if (TraceFilter[0] != 0) {						break;					}				}        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "FAX Ch    = %lu",(int)fax->ChannelNumber);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "FAX Event = %lu",     fax->Event);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "FAX Pages = %lu",     fax->Page_Counter);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "FAX Feat. = 0x%08x",  fax->Features);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "FAX ID    = <%s>",    &fax->Station_ID[0]);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "FAX Saddr = <%s>",    &fax->Subaddress[0]);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "FAX Pwd   = <%s>",    &fax->Password[0]);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "FAX Speed = %lu",     fax->Speed);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "FAX Res.  = 0x%08x",  fax->Resolution);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "FAX Width = %lu",     fax->Paper_Width);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "FAX Length= %lu",     fax->Paper_Length);        diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "FAX SLT   = %lu",     fax->Scanline_Time);        if (fax->Event == 3) {          diva_mnt_internal_dprintf(pC->hDbg->id, DLI_STAT, "FAX Disc  = %lu",     fax->Disc_Reason);        }      }      if ((fax->Event == 3) && (pC->hDbg->dbgMask & DIVA_MGT_DBG_FAX_STATISTICS)) {        (*(pC->pIdiLib->DivaSTraceGetFaxStatistics))(pC->pIdiLib);      }      break;    case DIVA_SUPER_TRACE_INTERFACE_CHANGE:      if (pC->hDbg->dbgMask & DIVA_MGT_DBG_IFC_EVENTS) {        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_STAT,                                 "Layer 1 -> [%s]", channel->pInterface->Layer1);        diva_mnt_internal_dprintf (pC->hDbg->id, DLI_STAT,                                 "Layer 2 -> [%s]", channel->pInterface->Layer2);      }      break;    case DIVA_SUPER_TRACE_NOTIFY_STAT_CHANGE:      if (pC->hDbg->dbgMask & DIVA_MGT_DBG_IFC_STATISTICS) {        /*          Incoming Statistics          */        if (channel->pInterfaceStat->inc.Calls) {          diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,          "Inc Calls                     =%lu", channel->pInterfaceStat->inc.Calls);        }        if (channel->pInterfaceStat->inc.Connected) {          diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,          "Inc Connected                 =%lu", channel->pInterfaceStat->inc.Connected);        }        if (channel->pInterfaceStat->inc.User_Busy) {          diva_mnt_internal_dprintf (pC->hDbg->id, DLI_LOG,

⌨️ 快捷键说明

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