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

📄 dump_instr.c

📁 ecos实时嵌入式操作系统
💻 C
字号:
#include <pkgconf/kernel.h>#include <cyg/kernel/ktypes.h>         // base kernel types#include <cyg/kernel/instrmnt.h>#include <stdio.h>#include <stdlib.h>// -------------------------------------------------------------------------// Instrumentation record.struct Instrument_Record{    CYG_WORD16  type;                   // record type    CYG_WORD16  thread;                 // current thread id    CYG_WORD    timestamp;              // 32 bit timestamp    CYG_WORD    arg1;                   // first arg    CYG_WORD    arg2;                   // second arg};// -------------------------------------------------------------------------#ifdef CYGDBG_KERNEL_INSTRUMENT_MSGS#define CYGDBG_KERNEL_INSTRUMENT_MSGS_DEFINE_TABLE#include <cyg/kernel/instrument_desc.h>#define NELEM(x) (sizeof(x)/sizeof*(x))externC char * cyg_instrument_msg(CYG_WORD16 type) {  struct instrument_desc_s *record;  struct instrument_desc_s *end_record;  CYG_WORD cl, event;  record = instrument_desc;  end_record = &instrument_desc[NELEM(instrument_desc)-1];  cl = type & 0xff00;  event = type & 0x00ff;  while ((record != end_record) && (record->num != cl)) {    record++;  }  if (record->num == cl) {    record++;    while ((record != end_record) && (record->num != event) &&           (record->num < 0xff)) {      record++;    }    if (record->num == event) {      return (record->msg);    }  }  return("Unknown event");}#endif // CYGDBG_KERNEL_INSTRUMENT_MSGSvoid usage(char *myname) {  fprintf(stderr,"Usage: %s <filename>\n",myname);  fprintf(stderr,"where filename is that of the instrumentation data");}int main(int argc, char * argv[]) {    FILE * file;  char * filename;  struct Instrument_Record record;  int cnt=0;  if (argc != 2) {    usage(argv[0]);    exit(1);  }  filename = argv[1];  file = fopen(filename, "r");  if (!file) {    fprintf(stderr,"Error opening file %s: ",filename);    perror("");    exit(1);  }    while (!feof(file)) {    fread(&record,sizeof(record),1,file);    if (record.type == 0) {      break;    }#ifdef CYGDBG_KERNEL_INSTRUMENT_MSGS     printf("%4d Record type (0x%04x): %-20s thread %2d, ",           cnt++,record.type,cyg_instrument_msg(record.type),            record.thread);#else    printf("%4d Record type 0x%04x, thread %2d, ",           cnt++,record.type, record.thread);#endif    printf("time %5d, arg1 0x%08x, arg2 0x%08x\n",           record.timestamp, record.arg1,           record.arg2);  }  fclose(file);  return (0);}

⌨️ 快捷键说明

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