📄 oslmemory.c
字号:
break;
}
}
memcpy(memData->fileName, &fileName[j], strlen(fileName) - j + 1);
/* strcpy(memData.fileName, (char *)fileName); */
memData->lineNumber = lineNumber;
memData->bytes = nob1;
memData->ptr = ptrAct;
memData->isAllocated = 1;
ByteCounter(ptr, 1, nob1);
}
else
{
PRINT_INFORMATION(("File size exceeded"));
}
if (MAX_BUFF < nob1)
{
MAX_BUFF = nob1;
}
return ptrAct;
}
/*-------------------------------------------------------------------
Function Name : osl_Mfree
Description : This osl_Mfree's the poinetr along with node from the link
list if present.
Input : Ponter to be freed
Output : None
-------------------------------------------------------------------*/
/*****************************************************************************
* FUNCTION
* OslMfreeCHK
* DESCRIPTION
*
* PARAMETERS
* frp [?]
* RETURNS
* void
*****************************************************************************/
void OslMfreeCHK(void *frp)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U8 i = 0, j = 0, k = 0;
U16 maskingByte;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
for (j = 0; memoryList[j].ptr != frp && j <= MEMORY_LIST_LENGTH; j++);
if (j != MEMORY_LIST_LENGTH)
{
maskingByte = 1;
for (i = 0; i < 16; i++)
{
if (memoryList[j].bytes & maskingByte)
{
break;
}
maskingByte <<= 1;
}
if (i < 16)
{
bufferCount[i - 3]--;
}
ByteCounter(frp, -1, memoryList[j].bytes);
memset(&memoryList[j], 0, sizeof(OSLMEMALLOC));
memoryListCount--;
}
#ifdef MMI_ON_WIN32
free(frp);
#else
free_ctrl_buffer(frp);
#endif
return;
}
/*-------------------------------------------------------------------
Function Name : osl_MemoryCHK
Description : This flag starts / stops building of the Memory
link list
Output : None
-------------------------------------------------------------------*/
/*****************************************************************************
* FUNCTION
* OslIntMemoryStart
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void OslIntMemoryStart()
{
#ifdef OSL_MEMORY_DUMP
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
memset(&memoryList, 0, sizeof(memoryList));
memset(&bufferCount, 0, sizeof(bufferCount));
memoryListCount = 0;
#endif /* OSL_MEMORY_DUMP */
return;
}
/*-------------------------------------------------------------------
Function Name : OslMemCounter
Description : This flag starts / stops building of the Memory
link list
Input : TRUE : TO start Mem link list
FALSE : To stop Mem link list
Output : None
-------------------------------------------------------------------*/
/*****************************************************************************
* FUNCTION
* OslIntMemCounter
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
*
*****************************************************************************/
long OslIntMemCounter()
{
#ifdef OSL_MEMORY_DUMP
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
return goslMemCount;
#else /* OSL_MEMORY_DUMP */
return 0;
#endif /* OSL_MEMORY_DUMP */
}
/*-------------------------------------------------------------------
Function Name : OslDumpDataInFile
Description : This Dumps memory link list data in the file
C:\oslMemoryDump
Input : None
Output : None
-------------------------------------------------------------------*/
/*****************************************************************************
* FUNCTION
* OslIntDumpDataInFile
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void OslIntDumpDataInFile()
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MYTIME t;
char fileName[128];
U8 i;
#ifdef MMI_ON_WIN32
FILE *fp;
#endif
OSLMEMALLOC *ptr = NULL;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
strcpy(fileName, "C:\\oslMemoryDump.txt");
#ifdef MMI_ON_WIN32
if ((fp = fopen(fileName, "a+")) == NULL)
{
return;
}
GetDateTime(&t);
fprintf(
fp,
"____________________________________________________________________________________________________________________________\n");
fprintf(fp, "Memory Dump at time %d:%d:%d on %d-%d-%d\n", t.nHour, t.nMin, t.nSec, t.nDay, t.nMonth, t.nYear);
fprintf(fp, "Maximum Buffer Allocated %ld\n", MAX_BUFF);
fprintf(fp, "Maximum Dynamic Memory used %ld\n", MaxDynamicMemUsed);
fprintf(fp, "Total Memory In Use %ld\n", goslMemCount);
#endif /* MMI_ON_WIN32 */
PRINT_INFORMATION(("____________________________________________________________________________________________________________________________"));
PRINT_INFORMATION(("Memory Dump at time %d:%d:%d on %d-%d-%d \n \n", t.nHour, t.nMin, t.nSec, t.nDay, t.nMonth,
t.nYear));
PRINT_INFORMATION(("Maximum Buffer Allocated %ld", MAX_BUFF));
PRINT_INFORMATION(("Maximum Dynamic Memory used %ld", MaxDynamicMemUsed));
PRINT_INFORMATION(("Total Memory In Use %ld", goslMemCount));
for (i = 0; i < MEMORY_LIST_LENGTH; i++)
{
ptr = &memoryList[i];
if (!ptr->isAllocated)
{
continue;
}
#ifdef MMI_ON_WIN32
fprintf(fp, "File: [%s] Line: [%d] Size: [%d]\n", ptr->fileName, ptr->lineNumber, ptr->bytes);
#endif
PRINT_INFORMATION(("File: [%s] Line: [%d] Size: [%d]", ptr->fileName, ptr->lineNumber,
ptr->bytes));
}
#ifdef MMI_ON_WIN32
fprintf(fp, "BUFFER VISE ALLOCATION\n");
fprintf(fp, "Number of buffers of size 8: [%d]\n", bufferCount[0]);
fprintf(fp, "Number of buffers of size 16: [%d]\n", bufferCount[1]);
fprintf(fp, "Number of buffers of size 32: [%d]\n", bufferCount[2]);
fprintf(fp, "Number of buffers of size 64: [%d]\n", bufferCount[3]);
fprintf(fp, "Number of buffers of size 128: [%d]\n", bufferCount[4]);
fprintf(fp, "Number of buffers of size 256: [%d]\n", bufferCount[5]);
fprintf(fp, "Number of buffers of size 512: [%d]\n", bufferCount[6]);
fprintf(fp, "Number of buffers of size 1024: [%d]\n", bufferCount[7]);
fprintf(fp, "Number of buffers of size 2048: [%d]\n", bufferCount[8]);
fprintf(fp, "Number of buffers of size 4096: [%d]\n", bufferCount[9]);
fprintf(fp, "Number of buffers of size 8192: [%d]\n", bufferCount[10]);
fprintf(fp, "Number of buffers of size 16384: [%d]\n", bufferCount[11]);
fprintf(fp, "Number of buffers of size 32768: [%d]\n", bufferCount[12]);
fprintf(fp, "Number of buffers of size 65536: [%d]\n", bufferCount[13]);
#endif /* MMI_ON_WIN32 */
PRINT_INFORMATION(("Number of buffers of size 8: [%d]", bufferCount[0]));
PRINT_INFORMATION(("Number of buffers of size 16: [%d]", bufferCount[1]));
PRINT_INFORMATION(("Number of buffers of size 32: [%d]", bufferCount[2]));
PRINT_INFORMATION(("Number of buffers of size 64: [%d]", bufferCount[3]));
PRINT_INFORMATION(("Number of buffers of size 128: [%d]", bufferCount[4]));
PRINT_INFORMATION(("Number of buffers of size 256: [%d]", bufferCount[5]));
PRINT_INFORMATION(("Number of buffers of size 512: [%d]", bufferCount[6]));
PRINT_INFORMATION(("Number of buffers of size 1024: [%d]", bufferCount[7]));
PRINT_INFORMATION(("Number of buffers of size 2048: [%d]", bufferCount[8]));
PRINT_INFORMATION(("Number of buffers of size 4096: [%d]", bufferCount[9]));
PRINT_INFORMATION(("Number of buffers of size 8192: [%d]", bufferCount[10]));
PRINT_INFORMATION(("Number of buffers of size 16384: [%d]", bufferCount[11]));
PRINT_INFORMATION(("Number of buffers of size 32768: [%d]", bufferCount[12]));
PRINT_INFORMATION(("Number of buffers of size 65536: [%d]", bufferCount[13]));
PRINT_INFORMATION(("____________________________________________________________________________________________________________________________"));
#ifdef MMI_ON_WIN32
fclose(fp);
#endif
return;
}
#endif /* OSL_MEMORY_DUMP */
/*-------------------------------------------------------------------
end of file OslMemory.C
---------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -