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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? xrun.c

?? 數(shù)據(jù)結(jié)構(gòu)之任意多叉樹的建立和操作
?? 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 */    } } 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产三级国产有无不卡| ...xxx性欧美| 天天综合天天做天天综合| 99精品偷自拍| 亚洲精品成a人| 欧美系列日韩一区| 亚洲高清免费在线| 欧美精品123区| 丝袜美腿高跟呻吟高潮一区| 91精品国产综合久久精品麻豆| 日本亚洲三级在线| 久久看人人爽人人| av不卡在线观看| 综合色中文字幕| 欧美日韩国产片| 九九热在线视频观看这里只有精品| 久久亚洲捆绑美女| 粉嫩一区二区三区在线看| 最新久久zyz资源站| 在线观看av一区二区| 婷婷综合久久一区二区三区| 欧美不卡在线视频| 成人高清av在线| 亚洲va国产va欧美va观看| 欧美大片免费久久精品三p| 国产麻豆精品theporn| 日韩毛片视频在线看| 欧美日韩不卡一区二区| 国产一区二区免费看| 亚洲啪啪综合av一区二区三区| 欧美日韩国产高清一区二区三区 | 一区二区三区加勒比av| 欧美美女喷水视频| 国产馆精品极品| 亚洲一区二区中文在线| 精品久久久久久久久久久久久久久| 丰满少妇久久久久久久| 日韩在线a电影| 国产精品久久久久久久久免费樱桃| 欧美三级资源在线| 成人精品免费视频| 日韩成人免费电影| 中文字幕一区二区在线观看 | 91精品国产综合久久福利软件| 精品无码三级在线观看视频| 亚洲最色的网站| 国产欧美一区二区精品性色 | 韩日av一区二区| 亚洲一区二区美女| 中文字幕免费观看一区| 欧美片在线播放| av一二三不卡影片| 精一区二区三区| 亚洲aⅴ怡春院| 亚洲日穴在线视频| 欧美激情综合网| 91精品国产综合久久久蜜臀粉嫩| 91美女片黄在线| 丁香婷婷综合网| 精品一区二区三区在线播放 | 日本系列欧美系列| 亚洲人成影院在线观看| 国产色产综合色产在线视频| 91精品一区二区三区在线观看| 99精品热视频| 成人av在线电影| 国产成人亚洲综合a∨猫咪| 麻豆精品新av中文字幕| 亚洲精品国产精品乱码不99| 久久先锋影音av鲁色资源| 精品视频在线免费观看| 欧美肥妇bbw| 色婷婷av一区二区三区gif| 国产精品538一区二区在线| 奇米精品一区二区三区在线观看| 亚洲国产一二三| 亚洲图片欧美一区| 一区二区三区四区在线免费观看 | 欧美日韩亚州综合| 91成人免费在线| 91在线看国产| 一本久久a久久精品亚洲| thepron国产精品| 成人午夜激情片| 成人午夜短视频| 99久久er热在这里只有精品15 | 色悠久久久久综合欧美99| 成人精品国产福利| 91尤物视频在线观看| 色综合天天综合网天天狠天天| 日本精品视频一区二区| 欧美中文一区二区三区| 欧美日产国产精品| 日韩一本二本av| 久久综合久久99| 国产精品久久久久久久久免费相片| 中文一区二区在线观看| 亚洲免费在线视频| 亚洲444eee在线观看| 久久国产剧场电影| 国产成人aaaa| 日本乱人伦一区| 欧美一区二区播放| 国产亚洲成年网址在线观看| 日本一区二区三区在线观看| 国产精品久久久久久久岛一牛影视| 亚洲三级在线免费观看| 亚洲第一综合色| 激情深爱一区二区| www.亚洲色图.com| 欧美日韩激情一区二区| 久久蜜桃av一区精品变态类天堂| 精品女同一区二区| 国产精品女主播av| 亚洲第一av色| 国产在线精品不卡| 91亚洲国产成人精品一区二三| 欧美日韩精品三区| 国产亚洲一区字幕| 一区二区三区在线观看网站| 老司机免费视频一区二区三区| 国产一区不卡精品| www.亚洲免费av| 91精品国产综合久久久蜜臀图片| 国产欧美精品一区aⅴ影院 | 午夜精品123| 激情欧美一区二区三区在线观看| 91在线丨porny丨国产| 日韩一级片网址| 亚洲欧美精品午睡沙发| 久久国产精品第一页| 99久久免费精品| 欧美一区二区三区免费在线看| 国产精品成人免费在线| 免费观看成人鲁鲁鲁鲁鲁视频| 91麻豆精品秘密| 国产亚洲综合色| 麻豆精品新av中文字幕| 色丁香久综合在线久综合在线观看| 久久久久久黄色| 日韩av电影免费观看高清完整版 | 欧美日韩一区久久| 国产精品无码永久免费888| 婷婷综合久久一区二区三区| 99久久综合精品| 国产欧美一区二区精品性| 奇米精品一区二区三区在线观看 | 日韩黄色一级片| 一本一道久久a久久精品| 国产视频在线观看一区二区三区| 日本午夜精品一区二区三区电影| 色狠狠色狠狠综合| |精品福利一区二区三区| 成人毛片老司机大片| 精品国产91洋老外米糕| 奇米一区二区三区| 欧美剧情电影在线观看完整版免费励志电影| 欧美经典一区二区| 国产伦精品一区二区三区视频青涩 | 久久青草国产手机看片福利盒子 | 国产一区二区在线电影| 4438亚洲最大| 性久久久久久久久| 欧美色成人综合| 亚洲一级在线观看| 91成人在线观看喷潮| 亚洲人亚洲人成电影网站色| eeuss鲁一区二区三区| 国产欧美精品区一区二区三区 | 色综合视频一区二区三区高清| 国产精品三级电影| 成人自拍视频在线| 欧美激情在线一区二区三区| 国产一区二区视频在线| 久久精品一区四区| 国产成人精品影视| 国产日本亚洲高清| 9人人澡人人爽人人精品| 亚洲婷婷综合色高清在线| 色综合视频在线观看| 亚洲一区电影777| 欧美日韩国产色站一区二区三区| 日韩高清一区在线| 日韩三级在线观看| 久久电影国产免费久久电影| 久久奇米777| av一区二区久久| 亚洲国产一区二区三区青草影视 | 国产在线不卡一区| 国产日韩视频一区二区三区| 波多野结衣的一区二区三区| 一区二区三区鲁丝不卡| 在线不卡欧美精品一区二区三区| 久久精品国产**网站演员| 欧美国产欧美综合| 色激情天天射综合网| 久久99热99| 一色桃子久久精品亚洲| 欧美在线一二三四区| 日韩中文字幕1|