241 lines
6.5 KiB
C++
241 lines
6.5 KiB
C++
#help_index "Info;Utils;Memory/Info;Cmd Line (Typically)"
|
|
|
|
I64 TSSSize(CTSS *tss)
|
|
{
|
|
return MSize2(tss)+
|
|
MSize2(tss->st0)+
|
|
MSize2(tss->st1)+
|
|
MSize2(tss->st2);
|
|
}
|
|
|
|
I64 PenBrushesSize()
|
|
{
|
|
I64 result=0,i;
|
|
for (i=0;i<GR_NUM_PEN_BRUSHES;i++)
|
|
result+=
|
|
DCSize(gr_pen_brushes[i])+
|
|
DCSize(gr_collision_pen_brushes[i])+
|
|
DCSize(gr_even_pen_brushes[i])+
|
|
DCSize(gr_odd_pen_brushes[i] );
|
|
return result;
|
|
}
|
|
|
|
I64 ScreenZoomTablesSize()
|
|
{
|
|
I64 result=0,i;
|
|
for (i=1;i<=GR_MAX_SCREEN_ZOOM;i++)
|
|
result+=MSize2(gr_screen_zoom_tables[i]);
|
|
return result;
|
|
}
|
|
|
|
I64 TaskStkSize(CTask *task)
|
|
{
|
|
CTaskStk *temps=task->stk;
|
|
I64 result=0;
|
|
while (temps) {
|
|
result+=MSize2(temps);
|
|
temps=temps->next_stk;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
I64 TaskQueSize(CTask *task)
|
|
{
|
|
CTaskCmd *tempc,*tempc1;
|
|
I64 result=0;
|
|
PushFD;
|
|
Cli;
|
|
while (LBts(&task->locked_flags,TASKLf_TASK_LOCK))
|
|
Pause;
|
|
tempc1=&task->next_servant_cmd;
|
|
tempc=tempc1->next;
|
|
while (tempc!=tempc1) {
|
|
result+=MSize2(tempc);
|
|
if (tempc->cmd_code==TASKCT_EXECUTE_STR ||
|
|
tempc->cmd_code==TASKCT_EXECUTE_FILE ||
|
|
tempc->cmd_code==TASKCT_TEXT_INPUT)
|
|
result+=MSize2(tempc->data);
|
|
tempc=tempc->next;
|
|
}
|
|
LBtr(&task->locked_flags,TASKLf_TASK_LOCK);
|
|
PopFD;
|
|
return result;
|
|
}
|
|
|
|
I64 BlkDevsSize()
|
|
{
|
|
I64 i,result=MSize2(sys_blkdevs);
|
|
CBlkDev *bdev;
|
|
for (i=0;i<NUM_BLKDEVS;i++) {
|
|
bdev=&sys_blkdevs[i];
|
|
if (bdev->bd_signature==BD_SIGNATURE_VAL) {
|
|
if (bdev->type==BDT_RAM)
|
|
"RAMDsk %C\t:%010X Unused:%010X\n",
|
|
bdev->first_drv_let,MSize2(bdev->RAM_dsk),
|
|
UnusedDrvSpace(bdev->first_drv_let);
|
|
result+=MSize2(bdev->dev_id_record);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
I64 PrtsSize()
|
|
{
|
|
I64 i,result=MSize2(sys_prts);
|
|
for (i=0;i<NUM_PRTS;i++)
|
|
result+=MSize2(sys_prts[i].buffered_map_dirty_bits)+
|
|
MSize2(sys_prts[i].fis);
|
|
return result;
|
|
}
|
|
|
|
Bool MemRepTask(CTask *task,Bool override_validate=FALSE)
|
|
{
|
|
I64 i,j,k,m,n;
|
|
U8 *st;
|
|
CDoc *doc;
|
|
CLex *lx;
|
|
CMathODE *o;
|
|
CCPU *c;
|
|
CTask *task1;
|
|
|
|
if (!override_validate && !TaskValidate(task))
|
|
return FALSE;
|
|
if (task==Fs)
|
|
task->rsp=GetStkPtr;
|
|
st=MStrUtil(task->task_title,SUF_REM_CTRL_CHARS|SUF_SAFE_DOLLAR);
|
|
"$$FG,GREEN$$Task:%010X$$FG,CYAN$$ %-30ts$$FG$$\n$$ID,2$$",task,st;
|
|
Free(st);
|
|
"$$FG,PURPLE$$Alloced:%010X Used:%010X $$FG,RED$$Unused:%010X$$FG$$\n",
|
|
TaskAllocatedMem(task,override_validate),
|
|
TaskUsedMem(task,override_validate),
|
|
TaskUnusedAllocatedMem(task,override_validate);
|
|
"HashTable:%010X\n",HashTableSize2(task->hash_table);
|
|
|
|
i=UnusedStk(task);
|
|
if (0<=i<=task->stk->stk_size)
|
|
"Stk Size :%010X Unused:%010X\n",TaskStkSize(task),i;
|
|
else
|
|
"Stk Size :%010X $$FG,RED$$$$BK,1$$Overflow$$BK,0$$$$FG$$\n",TaskStkSize(task);
|
|
|
|
doc=task->last_doc;
|
|
while (doc!=(&task->next_doc)(U8 *)-offset(CDoc.next_doc) &&
|
|
doc->doc_in_que_signature==DOC_IN_QUE_SIGNATURE_VAL) {
|
|
"Doc :%010X\n",DocSize(doc);
|
|
doc=doc->last_doc;
|
|
}
|
|
|
|
lx=task->next_lex;
|
|
while (lx!=&task->next_lex) {
|
|
"Lex :%010X\n",LexSize(lx);
|
|
lx=lx->next;
|
|
}
|
|
|
|
o=task->next_ode;
|
|
while (o!=&task->next_ode) {
|
|
"CMathODE :%010X\n",ODESize(o);
|
|
o=o->next;
|
|
}
|
|
|
|
if (task==sys_winmgr_task) {
|
|
"gr_dc2\t\t:%010X\n",DCSize(gr_dc2);
|
|
"gr_dc\t\t:%010X\n",DCSize(gr_dc);
|
|
"gr_dc_cache\t\t:%010X\n",DCSize(gr_dc_cache);
|
|
"gr_screen_image\t:%010X\n",DCSize(gr_screen_image);
|
|
"gr_zoomed_dc\t:%010X\n",DCSize(gr_zoomed_dc);
|
|
"gr_pen_brushes\t:%010X\n",PenBrushesSize;
|
|
"gr_1_to_8_bits\t:%010X\n",MSize2(gr_1_to_8_bits);
|
|
"gr_1_to_8_colors\t:%010X\n",MSize2(gr_1_to_8_colors);
|
|
"gr_text_base\t:%010X\n",MSize2(gr_text_base);
|
|
"gr_vga_text_cache\t:%010X\n",MSize2(gr_vga_text_cache);
|
|
"gr_win_z_buf\t:%010X\n",MSize2(gr_win_z_buf)+MSize2(gr_win_uncovered_bitmap);
|
|
"gr_screen_zoom_tbles:%010X\n",ScreenZoomTablesSize;
|
|
} else if (task==adam_task) {
|
|
j=0;k=0;m=0;n=0;
|
|
for (i=0;i<mp_cnt;i++) {
|
|
c=&cpu_structs[i];
|
|
k+=TSSSize(c->tss);
|
|
task1=c->seth_task;
|
|
do {
|
|
if (task1!=adam_task) {//adam task located in Kernel mem
|
|
j+=MSize2(task1);
|
|
m+=MSize2(task1->code_heap);
|
|
if (task1->data_heap!=task1->code_heap)
|
|
m+=MSize2(task1->code_heap);
|
|
}
|
|
n+=TaskQueSize(task1);
|
|
task1=task1->next_task;
|
|
} while (task1!=c->seth_task);
|
|
task1=c->idle_task;
|
|
j+=MSize2(task1);
|
|
m+=MSize2(task1->code_heap);
|
|
if (task1->data_heap!=task1->code_heap)
|
|
m+=MSize2(task1->code_heap);
|
|
}
|
|
"TaskStructs\t:%010X\n",j;
|
|
"TSSes\t:%010X\n",k;
|
|
"HeapCtrls\t:%010X\n",m;
|
|
"TaskQues\t:%010X\n",n;
|
|
"BlkDevs\t:%010X\n",BlkDevsSize;
|
|
"Prts\t:%010X\n",PrtsSize;
|
|
"Audio\t:%010X\n",CallExtStr("AudioSize");
|
|
if (sys_dsk_cache_base)
|
|
"DskCache\t:%010X\n",
|
|
MSize2(sys_dsk_cache_base)+MSize2(sys_dsk_cache_hash_table)+MSize2(sys_dsk_cache_ctrl);
|
|
"WordStat\t:%010X\n",CallExtStr("WordStatSize");
|
|
"Clipboard\t:%010X\n",DocSize(sys_clipboard_doc);
|
|
}
|
|
"$$ID,-2$$";
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
public U0 MemRep()
|
|
{
|
|
I64 i;
|
|
CTask *task;
|
|
CCPU *c;
|
|
U32 *u32_ptr;
|
|
Bool old_preempt=Preempt(OFF);
|
|
CBinFile *bfh=sys_boot_base-sizeof(CBinFile);
|
|
bfh(I64)+=bfh->file_size-1;
|
|
|
|
"$$FG,BLACK$$Low Memory\t:0000100000$$FG$$\n$$ID,2$$";
|
|
u32_ptr=SYS_BOOT_BASE;
|
|
"Kernel\t:%010X-%010X\n",*u32_ptr-sizeof(CBinFile),bfh;
|
|
"VGA\t\t:00000A0000-00000BFFFF\n";
|
|
"$$ID,-2$$$$FG,BLACK$$High Memory\t:0000100000-%010X$$FG$$\n",
|
|
sys_heap_limit;
|
|
"$$ID,2$$Page Tables\t:%010X-%010X\n",PAGE_TABLE_BASE,sys_heap_base-1;
|
|
"$$ID,-2$$";
|
|
|
|
if (sys_data_bp) {
|
|
"$$FG,BLACK$$Code Heap:%010X Used:%010X $$FG,RED$$Unused:%010X$$FG$$\n",
|
|
sys_code_bp->size*PAGE_SIZE,sys_code_bp->allocated_u8s,UnusedBPMem(sys_code_bp);
|
|
"$$FG,BLACK$$Data Heap:%010X Used:%010X $$FG,RED$$Unused:%010X$$FG$$\n",
|
|
sys_data_bp->size*PAGE_SIZE,sys_data_bp->allocated_u8s,UnusedBPMem(sys_data_bp);
|
|
} else
|
|
"$$FG,BLACK$$Code/Data Heap:%010X Used:%010X $$FG,RED$$Unused:%010X$$FG$$\n",
|
|
sys_code_bp->size*PAGE_SIZE,sys_code_bp->allocated_u8s,UnusedBPMem(sys_code_bp);
|
|
|
|
for (i=0;i<mp_cnt;i++) {
|
|
c=&cpu_structs[i];
|
|
"$$FG,GREEN$$CPU%d$$FG$$\n$$ID,2$$",i;
|
|
task=c->seth_task;
|
|
do {
|
|
if (!MemRepTask(task))
|
|
break;
|
|
task=task->next_task;
|
|
} while (task!=c->seth_task);
|
|
MemRepTask(c->idle_task,TRUE);
|
|
"$$ID,-2$$";
|
|
}
|
|
|
|
"$$FG,GREEN$$Independent Heaps$$FG$$\n$$ID,2$$";
|
|
"$$FG,BLACK$$sys_uncached_heap:%010X Used:%010X $$FG,RED$$Unused:%010X$$FG$$\n",
|
|
sys_uncached_heap->bp->size*PAGE_SIZE,sys_uncached_heap->used_u8s,UnusedBPMem(sys_uncached_heap->bp);
|
|
"$$ID,-2$$\n";
|
|
Preempt(old_preempt);
|
|
}
|
|
|
|
#help_index ""
|