📄 skproc.c
字号:
10); strcpy(sens_msg, pAC->I2c.SenTable[i].SenDesc); strcat(sens_msg, " (F)"); len += sk_proc_print(buffer, "%-25s %d.%02d\n", sens_msg, ((((pAC->I2c.SenTable[i].SenValue) *10)*9)/5 + 3200)/100, ((((pAC->I2c.SenTable[i].SenValue) *10)*9)/5 + 3200) % 10); break; case 2: strcpy(sens_msg, pAC->I2c.SenTable[i].SenDesc); strcat(sens_msg, " (V)"); len += sk_proc_print(buffer, "%-25s %d.%03d\n", sens_msg, pAC->I2c.SenTable[i].SenValue / 1000, pAC->I2c.SenTable[i].SenValue % 1000); break; case 3: strcpy(sens_msg, pAC->I2c.SenTable[i].SenDesc); strcat(sens_msg, " (rpm)"); len += sk_proc_print(buffer, "%-25s %d\n", sens_msg, pAC->I2c.SenTable[i].SenValue); break; default: break; } } /*Receive statistics */ len += sk_proc_print(buffer, "\nReceive statistics\n\n"); len += sk_proc_print(buffer, "Received bytes %Lu\n", (unsigned long long) pPnmiStat->StatRxOctetsOkCts); len += sk_proc_print(buffer, "Received packets %Lu\n", (unsigned long long) pPnmiStat->StatRxOkCts);#if 0 if (pAC->GIni.GP[0].PhyType == SK_PHY_XMAC && pAC->HWRevision < 12) { pPnmiStruct->InErrorsCts = pPnmiStruct->InErrorsCts - pPnmiStat->StatRxShortsCts; pPnmiStat->StatRxShortsCts = 0; }#endif if (pAC->dev[t-1]->mtu > 1500) pPnmiStruct->InErrorsCts = pPnmiStruct->InErrorsCts - pPnmiStat->StatRxTooLongCts; len += sk_proc_print(buffer, "Receive errors %Lu\n", (unsigned long long) pPnmiStruct->InErrorsCts); len += sk_proc_print(buffer, "Receive dropped %Lu\n", (unsigned long long) pPnmiStruct->RxNoBufCts); len += sk_proc_print(buffer, "Received multicast %Lu\n", (unsigned long long) pPnmiStat->StatRxMulticastOkCts);#ifdef ADVANCED_STATISTIC_OUTPUT len += sk_proc_print(buffer, "Receive error types\n"); len += sk_proc_print(buffer, " length %Lu\n", (unsigned long long) pPnmiStat->StatRxRuntCts); len += sk_proc_print(buffer, " buffer overflow %Lu\n", (unsigned long long) pPnmiStat->StatRxFifoOverflowCts); len += sk_proc_print(buffer, " bad crc %Lu\n", (unsigned long long) pPnmiStat->StatRxFcsCts); len += sk_proc_print(buffer, " framing %Lu\n", (unsigned long long) pPnmiStat->StatRxFramingCts); len += sk_proc_print(buffer, " missed frames %Lu\n", (unsigned long long) pPnmiStat->StatRxMissedCts); if (pAC->dev[t-1]->mtu > 1500) pPnmiStat->StatRxTooLongCts = 0; len += sk_proc_print(buffer, " too long %Lu\n", (unsigned long long) pPnmiStat->StatRxTooLongCts); len += sk_proc_print(buffer, " carrier extension %Lu\n", (unsigned long long) pPnmiStat->StatRxCextCts); len += sk_proc_print(buffer, " too short %Lu\n", (unsigned long long) pPnmiStat->StatRxShortsCts); len += sk_proc_print(buffer, " symbol %Lu\n", (unsigned long long) pPnmiStat->StatRxSymbolCts); len += sk_proc_print(buffer, " LLC MAC size %Lu\n", (unsigned long long) pPnmiStat->StatRxIRLengthCts); len += sk_proc_print(buffer, " carrier event %Lu\n", (unsigned long long) pPnmiStat->StatRxCarrierCts); len += sk_proc_print(buffer, " jabber %Lu\n", (unsigned long long) pPnmiStat->StatRxJabberCts); #endif /*Transmit statistics */ len += sk_proc_print(buffer, "\nTransmit statistics\n\n"); len += sk_proc_print(buffer, "Transmitted bytes %Lu\n", (unsigned long long) pPnmiStat->StatTxOctetsOkCts); len += sk_proc_print(buffer, "Transmitted packets %Lu\n", (unsigned long long) pPnmiStat->StatTxOkCts); len += sk_proc_print(buffer, "Transmit errors %Lu\n", (unsigned long long) pPnmiStat->StatTxSingleCollisionCts); len += sk_proc_print(buffer, "Transmit dropped %Lu\n", (unsigned long long) pPnmiStruct->TxNoBufCts); len += sk_proc_print(buffer, "Transmit collisions %Lu\n", (unsigned long long) pPnmiStat->StatTxSingleCollisionCts);#ifdef ADVANCED_STATISTIC_OUTPUT len += sk_proc_print(buffer, "Transmit error types\n"); len += sk_proc_print(buffer, " excessive collision %ld\n", pAC->stats.tx_aborted_errors); len += sk_proc_print(buffer, " carrier %Lu\n", (unsigned long long) pPnmiStat->StatTxCarrierCts); len += sk_proc_print(buffer, " fifo underrun %Lu\n", (unsigned long long) pPnmiStat->StatTxFifoUnderrunCts); len += sk_proc_print(buffer, " heartbeat %Lu\n", (unsigned long long) pPnmiStat->StatTxCarrierCts); len += sk_proc_print(buffer, " window %ld\n", pAC->stats.tx_window_errors);#endif } /* if (!DisableStatistic) */ } /* if (strcmp(pACname, currDeviceName) == 0) */ } SkgeProcDev = next; }}/***************************************************************************** * * sk_proc_print - generic line print * * Description: * This function fills the proc entry with statistic data about the * ethernet device. * * Returns: * the number of bytes written * */ static int sk_proc_print(void *writePtr, /* the buffer pointer */char *format, /* the format of the string */...) /* variable list of arguments */{ #define MAX_LEN_SINGLE_LINE 256 char str[MAX_LEN_SINGLE_LINE]; va_list a_start; int lenght = 0; struct seq_file *seq = (struct seq_file *) writePtr; SK_MEMSET(str, 0, MAX_LEN_SINGLE_LINE); va_start(a_start, format); vsprintf(str, format, a_start); va_end(a_start); lenght = strlen(str); seq_printf(seq, str); return lenght;}/***************************************************************************** * * sk_seq_show - show proc information of a particular adapter * * Description: * This function fills the proc entry with statistic data about the * ethernet device. It invokes the generic sk_gen_browse() to print * out all items one per one. * * Returns: * the number of bytes written * */static int sk_seq_show(struct seq_file *seq, /* the sequence pointer */void *v) /* additional pointer */{ void *castedBuffer = (void *) seq; currDev = seq->private; sk_gen_browse(castedBuffer); return 0;}/***************************************************************************** * * sk_proc_open - register the show function when proc is open'ed * * Description: * This function is called whenever a sk98lin proc file is queried. * * Returns: * the return value of single_open() * */static int sk_proc_open(struct inode *inode, /* the inode of the file */struct file *file) /* the file pointer itself */{ return single_open(file, sk_seq_show, PDE(inode)->data);}/******************************************************************************* * * End of file * ******************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -