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

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

?? memtrack.c

?? Vxworks下的C例子程序
?? C
字號:
/* * Memory diagnosics: memTrack.c * * Author: Richard Dickson (dickson@jlab.org) * * $Id: memTrack.c,v 1.1 1999/11/29 23:27:48 borkhuis Exp $ * *//* Richard Dickson  July, 1998 *//* Routines to report per task memory allocation */#include <stdio.h>#include <stdlib.h>#include <taskLib.h>#include <symLib.h>/* these three must have been initialized by the routine find_malloc before this module is loaded */extern void *(*addr_of_malloc)(size_t size);extern void *(*addr_of_calloc)(size_t nelem, size_t size);extern void  (*addr_of_free)(void *ptr);extern SYMTAB_ID sysSymTbl;/****************************************************************************/long getStackPointer(void){				/* assembly routine to return stack pointer value */ static const short code_array[] = {	  	                    0x4e56, 0000,	/* LINK.W  A6,#0 */			            0x200F,		/* MOVE.L  A7,D0 */			            0x4e5e,		/* ULNK    A6    */			            0x4e75		/* RTS		 */                                   }; return (((long(*)()) code_array)());}/****************************************************************************/void *malloc(size_t size){ WIND_TCB *tcb;					/* pointer to task control block */ void *ret_val; ret_val = (*addr_of_malloc)(size+4);		/* call real malloc, ask for 4 extra bytes to store TID */ if (ret_val)  {						/* if malloc success */   long *sp;					/* stack pointer */   tcb = (WIND_TCB*)taskIdSelf();		/* get TID */   *(WIND_TCB**)ret_val = tcb;			/* put TID at start of malloc buffer */   tcb->spare1++;				/* inc allocated block counter for this task */   tcb->spare2 += (*((int*)ret_val - 1) - 12);	/* vxWorks puts length of buff (+ buf's linked list overhead                                                   size (8 bytes)) into longword before malloc's return address.                                                   Subtract 4 more for the extra 4 asked for (total 12) to find                                                   size of caller's request.  Add this to this tasks total bytes                                                   allocated */   sp = (long*)getStackPointer();		/* get stack pointer so the caller of this routine can be found */   tcb->spare3 = (int)sp[7] - 6;		/* caller PC (JSR instruction is 6 bytes long itself) */  } (char*)ret_val += 4;				/* adjust malloc return value so caller doesn't see TID info */ return ret_val; }/****************************************************************************/void *calloc(size_t nelem, size_t size){ WIND_TCB *tcb;					/* pointer to task control block */ void *ret_val; unsigned bytes; bytes = nelem*size;				/* bytes to calloc */ ret_val = (*addr_of_calloc)(bytes+4, 1);	/* call real calloc, ask for 4 extra bytes to store TID */ if (ret_val)  {                                             /* if calloc success */   long *sp;					/* stack pointer */   tcb = (WIND_TCB*)taskIdSelf();               /* get TID */   *(WIND_TCB**)ret_val = tcb;                  /* put TID at start of calloc buffer */   tcb->spare1++;                               /* inc allocated block counter for this task */   tcb->spare2 += (*((int*)ret_val - 1) - 12);  /* vxWorks puts length of buff (+ buf's linked list overhead                                                   size (8 bytes)) into longword before calloc's return address.                                                   Subtract 4 more for the extra 4 asked for (total 12) to find                                                   size of caller's request.  Add this to this tasks total bytes                                                   allocated */   sp = (long*)getStackPointer();               /* get stack pointer so the caller of this routine can be found */   tcb->spare3 = (int)sp[7] - 6;		/* caller PC (JSR instruction is 6 bytes long itself) */  } (char*)ret_val += 4;                           /* adjust calloc return value so caller doesn't see TID info */ return ret_val; }/****************************************************************************/void free(void *ptr){ WIND_TCB *tcb;                                 /* pointer to task control block */ (char*)ptr -= 4;				/* adjust pointer for 4 extra bytes asked for by malloc or calloc */ tcb = *(WIND_TCB**)ptr;			/* get TID of task that did malloc or calloc */ if (!((unsigned)tcb & 0x80000000) && taskIdVerify((int)tcb) == OK)  {						/* if not already freed and TID is real */   *(unsigned*)ptr |= 0x80000000;		/* set top bit in TID to indicate not allocated */   tcb->spare1--;				/* adjust task's allocated block counter */   tcb->spare2 -= (*((int*)ptr - 1) - 12);	/* adjust task's allocated byte counter */  } (*addr_of_free)(ptr);				/* call real free routine */ return; }/****************************************************************************/#define MAX_TASKS 256int memTrack(void){ int tid[MAX_TASKS]; int i, num_tasks; int blocks = 0; int bytes  = 0; char caller[64]; int actual_addr; SYM_TYPE sym_type; num_tasks = taskIdListGet(tid, MAX_TASKS);		/* get all TIDs */ printf("\n"); printf("Task Name            TID  Blocks    Bytes                    Last-caller       PC\n"); printf("--------------- -------- ------- -------- ------------------------------ --------\n"); for (i=0; i<num_tasks; i++)  {   if (((WIND_TCB*)tid[i])->spare1)    {						/* if blocks allocated by this task */     blocks += ((WIND_TCB*)tid[i])->spare1;	/* add up for total */     bytes  += ((WIND_TCB*)tid[i])->spare2;	/* add up for total */     symFindByValue(sysSymTbl,			/* find caller routine name */                    ((WIND_TCB*)tid[i])->spare3,                    caller,                    &actual_addr,                    &sym_type);      sprintf(caller, "%s + 0x%x", caller, ((WIND_TCB*)tid[i])->spare3 - actual_addr);     printf("%-15s %8x %7d %8d %30s %8x\n", taskName(tid[i]), tid[i],                                            ((WIND_TCB*)tid[i])->spare1,                                            ((WIND_TCB*)tid[i])->spare2,                                            caller,                                             ((WIND_TCB*)tid[i])->spare3);    }  } printf("TOTAL                  %9d %8d\n", blocks, bytes); return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本美女一区二区| 综合自拍亚洲综合图不卡区| 日日摸夜夜添夜夜添国产精品| 91婷婷韩国欧美一区二区| 国产欧美一区二区精品忘忧草 | 亚洲精品成人悠悠色影视| 成人做爰69片免费看网站| 国产欧美一区二区三区在线老狼| 懂色一区二区三区免费观看| 国产精品第四页| 色婷婷综合久久久中文字幕| 亚洲国产精品久久人人爱 | 国产成人精品影院| 国产视频一区二区在线观看| av爱爱亚洲一区| 亚洲国产sm捆绑调教视频| 欧美剧情电影在线观看完整版免费励志电影| 亚洲高清中文字幕| 日韩免费在线观看| 成人h动漫精品| 亚洲国产精品尤物yw在线观看| 日韩精品一区在线| 成人av网在线| 日韩黄色免费电影| 国产日产欧美一区| 欧美丝袜丝交足nylons| 看片的网站亚洲| 国产无一区二区| 欧美在线观看一二区| 美国十次了思思久久精品导航| 久久久久久久综合色一本| 91在线视频在线| 捆绑紧缚一区二区三区视频| 中文字幕亚洲精品在线观看| 欧美精品久久久久久久久老牛影院| 国产在线精品一区二区夜色 | 亚洲最大成人综合| 精品欧美一区二区久久| 色综合久久综合网欧美综合网| 日日摸夜夜添夜夜添国产精品| 国产亚洲欧美激情| 欧美日韩国产影片| 成人免费毛片片v| 日本sm残虐另类| 亚洲欧美另类久久久精品2019| 日韩欧美一二三四区| 91视频免费看| 国产精品伊人色| 日韩福利视频网| 久久国产剧场电影| 亚洲黄色性网站| 中文子幕无线码一区tr| 欧美精品日韩精品| aa级大片欧美| 国产精品系列在线观看| 青青草视频一区| 亚洲综合一二区| 中文字幕一区三区| 久久午夜免费电影| 日韩一区二区三区视频在线观看| 欧美在线高清视频| 色综合中文字幕| 成人激情电影免费在线观看| 韩日欧美一区二区三区| 日韩中文欧美在线| 亚洲午夜久久久久| 亚洲曰韩产成在线| 亚洲激情中文1区| 亚洲欧美另类久久久精品| 国产精品女人毛片| 久久精品网站免费观看| 精品1区2区在线观看| 欧美成人高清电影在线| 欧美成人伊人久久综合网| 欧美一区二区三区在线观看视频| 欧美日韩精品一区二区三区蜜桃 | 国产精品综合二区| 国产真实乱子伦精品视频| 久久激五月天综合精品| 麻豆成人av在线| 精品在线播放免费| 国内久久精品视频| 国产精品一色哟哟哟| 国产精品系列在线播放| 国产麻豆欧美日韩一区| 国产乱码精品一品二品| 国产激情偷乱视频一区二区三区| 国产一区91精品张津瑜| 国产一区欧美一区| 成人午夜私人影院| 色婷婷av一区二区三区软件| 欧美性一二三区| 在线播放91灌醉迷j高跟美女 | 日韩中文字幕av电影| 欧美96一区二区免费视频| 精品系列免费在线观看| 国产一区 二区 三区一级| 成人精品视频网站| 91麻豆蜜桃一区二区三区| 欧美性感一区二区三区| 日韩精品一区二区三区蜜臀| 久久亚洲精精品中文字幕早川悠里 | 欧美性videosxxxxx| 91精品国产综合久久精品app| 精品少妇一区二区三区在线播放| 国产午夜亚洲精品理论片色戒 | 制服视频三区第一页精品| 精品日韩99亚洲| 国产精品国产三级国产a| 亚洲午夜久久久久久久久久久| 毛片av一区二区| 波多野结衣精品在线| 欧美在线看片a免费观看| 欧美成人伊人久久综合网| 国产精品国产成人国产三级| 亚洲国产精品久久久久婷婷884| 久久精品国内一区二区三区| 成人app网站| 3d成人动漫网站| 自拍偷拍国产亚洲| 日韩av一二三| 99久久久免费精品国产一区二区| 欧美日韩免费不卡视频一区二区三区 | 欧美大黄免费观看| 日韩理论电影院| 国内精品伊人久久久久影院对白| 97se亚洲国产综合自在线观| 欧美大片一区二区| 亚洲一区二区四区蜜桃| 国产一区二区三区四区在线观看| 日本黄色一区二区| 久久亚洲影视婷婷| 香蕉成人啪国产精品视频综合网| 国产xxx精品视频大全| 欧美色涩在线第一页| 国产精品私人影院| 蜜臀av一区二区在线观看| 在线精品国精品国产尤物884a| www国产成人免费观看视频 深夜成人网 | 99久久久久久| 久久这里只有精品首页| 丝袜亚洲另类欧美| 91浏览器入口在线观看| 久久久国际精品| 精品一区二区三区久久| 欧美日韩一区不卡| 亚洲国产精品精华液ab| 精品一区二区三区免费毛片爱 | 亚洲男女毛片无遮挡| 国产精品一区在线观看乱码| 91精品婷婷国产综合久久| 亚洲精品少妇30p| 成人免费毛片高清视频| www成人在线观看| 蜜桃视频在线观看一区二区| 欧美美女直播网站| 一区二区三区国产精品| 99精品视频一区| 国产精品国产馆在线真实露脸| 国产91丝袜在线18| 欧美精品一区二区三区久久久| 日产欧产美韩系列久久99| 欧美日韩一卡二卡三卡| 亚洲成人av免费| 欧美精品精品一区| 日韩成人伦理电影在线观看| 欧美日韩国产高清一区| 午夜伦欧美伦电影理论片| 欧美视频一区在线| 一级做a爱片久久| 欧美色综合网站| 午夜久久福利影院| 欧美日韩一区二区三区四区| 亚洲bt欧美bt精品| 8x福利精品第一导航| 日本网站在线观看一区二区三区| 欧美疯狂性受xxxxx喷水图片| 偷窥国产亚洲免费视频| 日韩一级黄色片| 国产一区二区三区高清播放| 精品国产3级a| 成人性视频网站| 亚洲人精品一区| 欧美日韩视频在线观看一区二区三区| 夜夜精品视频一区二区| 3d动漫精品啪啪1区2区免费 | 国产女同互慰高潮91漫画| 国产91对白在线观看九色| 国产精品理伦片| 在线免费不卡视频| 日韩在线一区二区| 久久综合狠狠综合久久综合88 | 亚洲狠狠爱一区二区三区| 欧美日韩午夜影院| 久久国产精品99久久久久久老狼| 精品久久久三级丝袜| 成人黄色av网站在线| 亚洲成人中文在线| 久久丝袜美腿综合| 色狠狠一区二区|