亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xrun.c

?? 數據結構之任意多叉樹的建立和操作
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*sys lib header files*/#include <stdio.h>#include <stdlib.h>#include <memory.h>/*local application files*/#include "xrun.h" /*--varible---------------------------------------*/ static Funtable *funs; static int       funssize;  static Caller *calltree; static Caller  roottree; static Caller *rootcall= &roottree; static unsigned long cycle = 0;/*--cycles op----------------------------------------*/ unsigned long cycleread(){  return (cycle);}void cyclewrite(unsigned long va){  cycle = va;}/*--funs op----------------------------------------*/ /*--------------------------------------- fun_name: GetFileSizeauthor:    date:     20090315purpose:  in: out: return: history: create it on 315;   -----------------------------------------*/ long GetFileSize(const char* FileNameStr) {     long fsize = 0;          FILE* fp = fopen(FileNameStr, "r");     if (fp == NULL) return -1;     fseek(fp, 0L, SEEK_END);     fsize  = ftell(fp);     fclose(fp);         return fsize; } /* insert here 20090318 */int GetFunsCount(const char* FileNameStr){  char  count[16];  char  cmd[LEN_PER_LINE];  FILE *pp;     memset(count, 0x00, 16);  memset(cmd, 0x00,LEN_PER_LINE);  sprintf(cmd, "cat %s | wc -l", FileNameStr);  if((pp = popen(cmd, "r")) == NULL)  {    printf("popen() error!\n");    exit(1);  }  fgets(count, 16, pp);  count[15] = 0;  pclose(pp);  return (atoi(count));}  /*--------------------------------------- fun_name: transmitfuntableauthor:    date:     20090314purpose: in: out: return: history: 20090314 0.0-----------------------------------------*/ void transmitfuntable(const char *filename, Funtable *ft) {     FILE *fdb;     int  len = 0;    int  i   = 0;    char linebuf[LEN_PER_LINE];         char *ph = linebuf;     if(ft == NULL)      return;    fdb = fopen(filename, "rb");     if(fdb <= 0)        return;     memset(linebuf, 0x00, sizeof(char)*LEN_PER_LINE);          while(fgets(linebuf, LEN_PER_LINE, fdb) != NULL)     { 	/*id*/	ph       = linebuf;        ft[i].id = atoi(ph); 	/*name*/	ph  = strchr(ph, ' ');	len = strchr(ph + 1, ' ') - ph -1;        memcpy(ft[i].name, ph+1, len);  	/*start & end address*/        ph       = strstr(ph, "0x");        ft[i].go = (unsigned int)strtoul(ph+2, NULL, 16); 	ph          = strstr(ph+1, "0x");        ft[i].bound = (unsigned int)strtoul(ph+2, NULL, 16);	i++;	memset(linebuf, 0x00, sizeof(char)*LEN_PER_LINE);     }     fclose(fdb); }   /*--------------------------------------- fun_name: searchoffauthor: date: purpose: in: out: return: history: -----------------------------------------*/ Offtype searchoff(const unsigned int insna) {     int i       = 0;     Offtype ret = OTHER;     /*   modify it insna >= funs[1].go  */    if((insna >= funs[0].go) && (insna < (funs[funssize-1].go + funs[funssize-1].bound)))    {      ret = WAIST;      for(; i < funssize; i++)       {         if(insna == funs[i].go)          { 	  ret = HEADER;	  break;        }       }     }   return (ret); }  /*--------------------------------------- fun_name: searchidauthor:    date: purpose: history: 20090314 0.0-----------------------------------------*/ int searchid(const unsigned int insna) {     int i = 0;     for(; i < funssize; i++)     {         if(insna == funs[i].go)              break;     }     return (i); }  /*--------------------------------------- fun_name: searchnearestidauthor: date: purpose: in: out: return: history: -----------------------------------------*/ int searchnearestid(const unsigned int insna) {     int i = 0;     for(; i < funssize; i++)     {         if(insna <= funs[i].go)              break;     }     return (i-1); }   /*--------------------------------------- fun_name: searchaddressauthor:    date: purpose: in: out: return: history: -----------------------------------------*/ unsigned int searchaddress(const int fid) {     int i = 0;     for(; i < funssize; i++)     {         if(fid == funs[i].id)              break;     }     return (funs[i].go); } /*--------------------------------------- fun_name: searchoffsetauthor:    date:    purpose:  get a function 's offsetin:       id in funtable.txtout:      nonereturn:   offsethistory:  liyi creat it on 20090401-----------------------------------------*/  unsigned int searchoffset(const int fid) {    int i = 0;     for(; i < funssize; i++)     {         if(fid == funs[i].id)              break;     }     return (funs[i].bound); }/*--------------------------------------- fun_name: searchnameasidauthor: date: purpose: in: out: return: history: 20090326 completed-----------------------------------------*/ char *searchnameasid(const int cid) {     char *pname = NULL;     pname = funs[cid].name;    return pname; }  /*--caller op----------------------------------------*/ /*--------------------------------------- fun_name: creatcallerauthor:    date:     090314purpose: in: out: return: history: create it on 03014 -----------------------------------------*/ Caller * creatcaller(unsigned int cia, unsigned int lia) {     Caller *pcall = NULL;        pcall = (Caller *)malloc(sizeof(Caller));     if(pcall != NULL)     {         pcall->id = searchid(cia);         pcall->depth = 0;                 /*exeinfo*/         pcall->exeinfo.parentid = 0;        pcall->exeinfo.elapse   = 0;                 pcall->exeinfo.abegin = cia;         pcall->exeinfo.aleave = 0;         pcall->exeinfo.aretur = lia + 0x00000008; // liyi 20090318 not +4         /*link info*/         pcall->father = NULL;                  pcall->front  = NULL;         pcall->next   = NULL;         pcall->head  = NULL;         pcall->rear  = NULL;     }     return (pcall);}    /*--wiretap op----------------------------------------*/  /*--------------------------------------- fun_name: wiretapkillauthor:    date: purpose: in: out: return: history: -----------------------------------------*/ Status KillCallerTree(Caller * tree);void wiretapkill() {     free(funs);    KillCallerTree(rootcall);     cyclewrite(0);}   /*--------------------------------------- fun_name: author: date: purpose: in: out: return: history: -----------------------------------------*/ void wiretapopen(Caller *pstart) {     Exeinfo *anewCall;          if(pstart != NULL)     {       pstart->exeinfo.elapse = cycleread();    } }   /*--------------------------------------- fun_name: wiretapcloseauthor:    date: purpose: in: out: return: history: -----------------------------------------*/ void wiretapclose(Caller *pend) {     if(pend != NULL)     {       pend->exeinfo.elapse = cycleread() - (pend->exeinfo.elapse);     } }   /*--------------------------------------- fun_name:  buildfuntablefileauthor:    liyidate: purpose: in: out: return: history:  liyi 20090324 make here-----------------------------------------*/  void buildfuntablefile(char *fname, FILE *fhand){  char *pstr = NULL;  char command[256];  char pinline[LEN_NAME+10];  char funline[LEN_PER_LINE];  char fnnline[LEN_PER_LINE];  char nm[LEN_NAME];  char ad[LEN_ADD_BEGIN];  FILE *phand = NULL;  unsigned int id = 0;  unsigned int add = 0;  unsigned int off = 0;    memset(command, 0x00, sizeof(char)*256);  memset(pinline, 0x00, sizeof(char)*(LEN_NAME+10));  memset(funline, 0x00, sizeof(char)*LEN_PER_LINE);  memset(fnnline, 0x00, sizeof(char)*LEN_PER_LINE);  memset(nm,      0x00, sizeof(char)*LEN_NAME);  memset(ad,      0x00, sizeof(char)*LEN_ADD_BEGIN);  #if RELEASE  sprintf(command, "%s %s %s", "../tool/mipsisa32-nm -n", fname, "| grep T");  #else  sprintf(command, "%s %s %s", "~/ictoolchain/bin/mipsisa32-nm -n", fname, "| grep T");  #endif  if((phand = popen(command, "r")) == NULL)   {    printf("error popen!");    exit(1);  }  /* find the main()*/  while(fgets(pinline, LEN_PER_LINE, phand))   {    if(strstr(pinline,"main")) break;  }  /* process the pinline*/  pstr = pinline;  do  {    /*ad*/    strncpy(ad, pstr, (strchr(pstr,0x20)-pstr));    add = (unsigned int)strtoul(ad, NULL, 16);    /*nm*/    pstr += strlen(pinline) -1;    *pstr = 0x00;    for(;*pstr != 0x20; pstr--);    strcpy(nm, pstr);    nm[LEN_NAME-1] = 0;        /*assemble*/    sprintf(funline, "%d%s 0x%x 0x%x", id, nm, add, 0);        /*write into app_funtable.txt*/    if(id > 0)    {      off  = add - off;  /*off*/      pstr = strstr(fnnline, "0x0");      sprintf(pstr,"0x%x\n", off);      fputs(fnnline, fhand);    }    strcpy(fnnline, funline);    /*id*/    id ++;    if((strstr(pinline,"exit"))       || (strstr(pinline,"_start"))       || (strstr(pinline,"zerobss"))       || (strstr(pinline,"init"))       || (strstr(pinline,"_exit"))       || (strstr(pinline,"atexit"))       || (strstr(pinline,"free"))       ) break;    /* clean all of buffer to prepare for next line*/    off = add;    add = 0;    memset(pinline, 0x00, sizeof(char)*(LEN_NAME+10));    memset(funline, 0x00, sizeof(char)*LEN_PER_LINE);    memset(nm,      0x00, sizeof(char)*LEN_NAME);    memset(ad,      0x00, sizeof(char)*LEN_ADD_BEGIN);    pstr = pinline;  }while(fgets(pinline, LEN_PER_LINE, phand));  pclose(phand);}/*--------------------------------------- fun_name: wiretapinit author:     date:     20090311 purpose:  init the wiretapper in:       none out:      none return:   Okay or Do not history:  20090311 creat it by   -----------------------------------------*/ Status wiretapinit(char *app) {     char filename[LEN_NAME-14];  /*14 = strlen("_funtable.txt")*/    char cmd[LEN_NAME];    FILE * filehand = NULL;    if(app == NULL)  return (DONT);    /* strcat app_funtable.txt*/    memset(filename, 0x00, (LEN_NAME-14)*sizeof(char));    memset(cmd, 0x00, LEN_NAME*sizeof(char));    sprintf(filename, "%s%s", app, "_funtable.txt");    sprintf(cmd, "rm -f %s", filename);    system(cmd);    filehand = fopen(filename, "wt");    buildfuntablefile(app, filehand);    fclose(filehand);    #if (!RELEASE)    system("echo ____________________________________________________________________");    printf("i name entry      offset\n\n");    sprintf(cmd, "cat %s", filename);    system(cmd);    system("echo ____________________________________________________________________");    #endif    /*functions --> funs */    funssize = GetFunsCount(filename);    funs     = (Funtable *)malloc(funssize * sizeof(Funtable));     if(funs == NULL) return DONT;         memset(funs, 0x00, funssize * sizeof(Funtable));    transmitfuntable(filename, funs);          /* init the 0 level caller */     roottree.id    = 0;     roottree.depth = 0;              /*exe info*/     memset(&roottree, 0x00, sizeof(Caller));    roottree.father           = NULL;    roottree.exeinfo.parentid = -1;     roottree.exeinfo.elapse   = cycle;    roottree.exeinfo.abegin   = searchaddress(0);     roottree.exeinfo.aretur   = searchaddress(0) + searchoffset(0) - 8; /*   20090104*/    calltree                  = rootcall;     return (OKAY);}   /*Inorder to get start anD end of function*/   /*--------------------------------------- fun_name: wiretapauthor:    date:     2009-03-12purpose:  in: out: return: history: 2009-03-12 0.0-----------------------------------------*/ void wiretap(Caller **hostcall,             unsigned int lastia,              unsigned int currentia) {      Offtype offflag             = WAIST;     Caller *subcall             = NULL;     int     idfun               = 0;     static unsigned int  ncall  = 0; /*   modify on 0403 , it is important when there is only main() */        /* check a new caller or a return */     offflag = searchoff(currentia);     #if APPLE    printf(" %x ,%d \n", currentia, offflag);    #endif    if(offflag == HEADER)    {       if(ncall == 0) /* the main()*/      {        #if(!RELEASE)	printf("id   deep   dad    start \n\n");	#endif	subcall = *hostcall;	subcall->exeinfo.aretur = lastia + 0x00000008;      }      if((*hostcall != NULL) && (ncall > 0))       { 	/* creat a caller */ 	subcall    = creatcaller(currentia,lastia); 	if(subcall == NULL) return ;		/* link the host */   	subcall->father = (*hostcall); 	idfun = searchnearestid(lastia);	if((*hostcall)->id == idfun) 	{ 	  subcall->exeinfo.parentid = (*hostcall)->id; 	  /*Son Queue*/ 	  if((*hostcall)->head != NULL) 	  { 	    /*Buddy Queue*/ 	    (*hostcall)->rear->next = subcall; 	    subcall->front          = (*hostcall)->rear; 	    (*hostcall)->rear       = subcall; 	  } 	  else 	  { 	    (*hostcall)->head = subcall; 	    (*hostcall)->rear = subcall; 	  } 	  /* update level */ 	  subcall->depth = (*hostcall)->depth + 1;   	  /* update the host ,move it to lower rank*/ 	  *hostcall = subcall; 	}      }       /* open a wiretap for the caller */          wiretapopen(subcall);       #if(!RELEASE)      printf("%d  -   %d  -  %d   -  %ld \n",	     subcall->id, 	     subcall->depth, 	     subcall->exeinfo.parentid,	     subcall->exeinfo.elapse);      #endif      ncall ++;    }     else    if(((*hostcall)->exeinfo.aretur) == currentia)      {       (*hostcall)->exeinfo.aleave = lastia;            /* close a wiretap for the caller */        wiretapclose(*hostcall);                #if(!RELEASE)      //printf("%d eat %ld\n", (*hostcall)->id, (*hostcall)->exeinfo.elapse);      #endif            /* return to his parents ,move it to upper rank*/       if((*hostcall != &roottree)) /*  20090401 */	(*hostcall) = (*hostcall)->father;              }     else     {       /* Reserved */    } } 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91黄色激情网站| 国产伦精品一区二区三区免费| 日韩国产高清在线| 大胆亚洲人体视频| 4438x亚洲最大成人网| 一区二区三区中文免费| 福利视频网站一区二区三区| 欧美成人猛片aaaaaaa| 亚洲乱码国产乱码精品精可以看| 国产乱子伦视频一区二区三区| 欧美久久久久久蜜桃| 亚洲乱码中文字幕| a级精品国产片在线观看| 久久尤物电影视频在线观看| 日韩电影在线观看电影| 精品视频一区三区九区| 亚洲精品欧美激情| 91色porny在线视频| 中文字幕一区二区三区乱码在线| 国产精品99久久久久久久女警| 日韩欧美在线影院| 丝袜美腿亚洲色图| 欧美一区日本一区韩国一区| 夜夜揉揉日日人人青青一国产精品| 成人午夜免费电影| 26uuu久久综合| 国产精品久久久久aaaa| 国产日韩欧美电影| 亚洲日本va在线观看| 欧美一级电影网站| 91福利社在线观看| 国产69精品一区二区亚洲孕妇| 一区二区视频在线看| 日韩女优电影在线观看| 成人一区在线观看| 麻豆极品一区二区三区| 高清beeg欧美| 岛国精品在线观看| 国产精品色噜噜| 国产成人av一区二区| 欧美激情一区三区| 不卡的av网站| 亚洲另类中文字| 欧美视频一区二区三区四区| 日韩国产欧美在线观看| 精品成人a区在线观看| 国产精品77777| |精品福利一区二区三区| 欧美中文字幕不卡| 老司机一区二区| 国产精品久久一卡二卡| 91久久精品一区二区二区| 性做久久久久久久免费看| 日韩免费在线观看| 成人国产视频在线观看| 亚洲午夜久久久久| 精品国产不卡一区二区三区| 成人毛片在线观看| 午夜精品在线视频一区| 久久综合九色综合97婷婷| 91在线观看免费视频| 男人的j进女人的j一区| 久久久99免费| 欧美三级乱人伦电影| 麻豆精品久久精品色综合| 亚洲激情av在线| 日韩写真欧美这视频| 99国产精品久久| 免费成人在线视频观看| 国产精品天美传媒| 欧美久久久久久久久| 菠萝蜜视频在线观看一区| 午夜精品一区二区三区免费视频| 精品国产123| 欧美私人免费视频| 粗大黑人巨茎大战欧美成人| 亚洲国产精品久久一线不卡| 久久久久久久久免费| 欧美伦理电影网| 国产电影一区二区三区| 视频一区二区中文字幕| 国产精品毛片高清在线完整版| 欧美丰满一区二区免费视频| eeuss影院一区二区三区| 久久久久久久久97黄色工厂| 麻豆91精品视频| 一区二区三区精品| 懂色av一区二区在线播放| 久久嫩草精品久久久久| 精品一区二区免费视频| 精品欧美乱码久久久久久1区2区| 日本人妖一区二区| xnxx国产精品| 国产精品一区二区三区四区 | 激情都市一区二区| 欧美一区二区日韩一区二区| 91玉足脚交白嫩脚丫在线播放| 狠狠色丁香婷婷综合久久片| 日韩电影在线观看电影| 五月婷婷综合在线| 有坂深雪av一区二区精品| 中文字幕日本乱码精品影院| 国产肉丝袜一区二区| 久久亚洲精精品中文字幕早川悠里| 欧美精品久久天天躁| 欧美日韩精品一区视频| 欧美日韩精品一区视频| 欧美色图天堂网| 欧美日韩一区二区三区在线| 欧美日韩一区二区在线观看 | 麻豆成人91精品二区三区| 亚洲成人www| 日韩影院在线观看| 五月婷婷久久综合| 男人的j进女人的j一区| 美女性感视频久久| 精品一区二区国语对白| 激情六月婷婷久久| 国产99久久精品| 国产黑丝在线一区二区三区| 成人开心网精品视频| eeuss鲁片一区二区三区| 色综合久久中文字幕| 欧美日韩国产经典色站一区二区三区| 在线看日韩精品电影| 91精品国产91热久久久做人人| 日韩欧美专区在线| 国产午夜精品在线观看| 综合久久给合久久狠狠狠97色| 亚洲免费视频成人| 日韩电影在线观看网站| 国产精品一区二区三区网站| av一区二区三区在线| 欧美日韩国产小视频| 欧美不卡一区二区三区| 中文字幕欧美三区| 亚洲午夜在线电影| 精品中文字幕一区二区| 不卡的电影网站| 欧美视频在线一区二区三区 | 欧美色精品在线视频| 日韩免费视频一区| 国产精品白丝在线| 国产毛片精品视频| 成人一级片在线观看| 国产精品久久久久久久裸模| 日韩精彩视频在线观看| 美女网站色91| 成人av电影在线网| 欧美三级电影精品| 精品91自产拍在线观看一区| 国产日韩欧美电影| 国产精品白丝在线| 国产色婷婷亚洲99精品小说| 国产欧美一区二区精品秋霞影院 | 欧美国产日韩亚洲一区| 国产精品私人影院| 亚洲一区二区三区精品在线| 另类专区欧美蜜桃臀第一页| 99久久免费视频.com| 欧美一区二区网站| 亚洲欧美福利一区二区| 爽爽淫人综合网网站| 99视频有精品| 欧美大片日本大片免费观看| 亚洲人成网站影音先锋播放| 久久99精品久久久久久国产越南| 91国产福利在线| 国产精品久久久久久久久晋中| 蜜桃91丨九色丨蝌蚪91桃色| 色偷偷久久人人79超碰人人澡| 久久久国产精品不卡| 美国十次综合导航| 欧美性欧美巨大黑白大战| 欧美国产日本视频| 黄色日韩三级电影| 日韩片之四级片| 亚洲国产一二三| 色乱码一区二区三区88 | 日韩欧美成人一区二区| 亚洲综合男人的天堂| 成人免费av资源| 久久人人爽爽爽人久久久| 麻豆精品精品国产自在97香蕉| 欧美三级日韩三级| 一区二区三区欧美日| 99精品视频在线观看| 国产性色一区二区| 国产成人8x视频一区二区| 欧美成人bangbros| 久久99最新地址| 日韩精品中文字幕一区| 麻豆精品在线视频| 日韩欧美中文字幕公布| 免费在线欧美视频| 91精品国产高清一区二区三区 | 欧美精品1区2区3区| 亚洲成人1区2区| 欧美日韩高清一区二区三区| 一区二区三区在线播|