Team Ai
Datasetpublic

hschumann2/TempleOS-Source-Code

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes847downloads
MemRep.txt231 linesDownload Raw Back to Utils
1 2#help_index "Info;Memory/Info;Cmd Line (Typically)"3 4I64 TSSSize(CTSS *tss)5{6  return MSize2(tss)+MSize2(tss->st0)+MSize2(tss->st1)+MSize2(tss->st2);7}8 9I64 PenBrushesSize()10{11  I64 res=0,i;12  for (i=0;i<GR_PEN_BRUSHES_NUM;i++)13    res+=DCSize(gr.pen_brushes[i])+DCSize(gr.collision_pen_brushes[i])+14          DCSize(gr.even_pen_brushes[i])+DCSize(gr.odd_pen_brushes[i]);15  return res;16}17 18I64 ScrnZoomTablesSize()19{20  I64 res=0,i;21  for (i=1;i<=GR_SCRN_ZOOM_MAX;i++)22    res+=MSize2(gr.scrn_zoom_tables[i]);23  return res;24}25 26I64 TaskStkSize(CTask *task)27{28  CTaskStk *tmps=task->stk;29  I64 res=0;30  while (tmps) {31    res+=MSize2(tmps);32    tmps=tmps->next_stk;33  }34  return res;35}36 37I64 TaskQueSize(CTask *task)38{39  CJob *tmpc,*tmpc1;40  I64 res=0;41  PUSHFD42  CLI43  while (LBts(&task->srv_ctrl.flags,JOBCf_LOCKED))44    PAUSE45 46  tmpc1=&task->srv_ctrl.next_waiting;47  tmpc=tmpc1->next;48  while (tmpc!=tmpc1) {49    res+=MSize2(tmpc)+MSize2(tmpc->aux_str);50    tmpc=tmpc->next;51  }52 53  tmpc1=&task->srv_ctrl.next_done;54  tmpc=tmpc1->next;55  while (tmpc!=tmpc1) {56    res+=MSize2(tmpc)+MSize2(tmpc->aux_str);57    tmpc=tmpc->next;58  }59 60  LBtr(&task->srv_ctrl.flags,JOBCf_LOCKED);61  POPFD62  return res;63}64 65I64 BlkDevsSize()66{67  I64 i,j,res=MSize2(blkdev.blkdevs);68  CBlkDev *bd;69  for (i=0;i<BLKDEVS_NUM;i++) {70    bd=&blkdev.blkdevs[i];71    if (bd->bd_signature==BD_SIGNATURE_VAL) {72      j=(bd->max_blk+1)<<BLK_SIZE_BITS;73      if (bd->type==BDT_RAM)74        "RAMDsk %C\t:%010X/%010X\n",75              bd->first_drv_let,j-DrvUnused(bd->first_drv_let),j;76      res+=MSize2(bd->dev_id_record);77    }78  }79  return res;80}81 82I64 DrvsSize()83{84  I64 i,res=MSize2(blkdev.drvs);85  for (i=0;i<DRVS_NUM;i++)86    res+=MSize2(blkdev.drvs[i].cur_fat_blk)+MSize2(blkdev.drvs[i].fis);87  return res;88}89 90Bool MemRepTask(CTask *task,Bool override_validate=FALSE)91{92  I64 i,j,k,m,n;93  CDoc *pdoc,*ddoc,*bdoc;94  CCmpCtrl *cc;95  CMathODE *o;96  CCPU *c;97  CTask *task1;98 99  if (!override_validate && !TaskValidate(task))100    return FALSE;101  if (task==Fs)102    task->rsp=GetRSP;103  "$BLACK$%-27t$Q#%08X$FG$\n",task->task_title,task;104  "$ID,2$Heap\t:%010X/%010X\n",TaskMemUsed(task,override_validate),105        TaskMemAlloced(task,override_validate);106 107  i=UnusedStk(task);108  j=TaskStkSize(task);109  if (0<=i<=task->stk->stk_size)110    "Stk\t\t:%010X/%010X\n",j-i,j;111  else112    "Stk\t\t:$RED$$BK,1$Overflow$BK,0$$FG$/%010X\n",j;113 114  "HashTable\t:%010X\n",HashTableSize2(task->hash_table);115  "FPU\t\t:%010X\n",MSize2(task->fpu_mmx);116  "DirCur\t:%010X\n",MSize2(task->cur_dir);117 118  if (pdoc=DocPut(task))119    "PutDoc\t:%010X\n",DocSize(pdoc);120  if ((ddoc=DocDisplay(task)) && pdoc!=ddoc)121    "DisplayDoc\t:%010X\n",DocSize(ddoc);122  if (bdoc=DocBorder(task))123    "BorderDoc\t:%010X\n",DocSize(bdoc);124 125  cc=task->next_cc;126  while (cc!=&task->next_cc) {127    "CmpCtrl\t:%010X\n",CmpCtrlSize(cc);128    cc=cc->next;129  }130 131  o=task->next_ode;132  while (o!=&task->next_ode) {133    "CMathODE\t:%010X\n",ODESize(o);134    o=o->next;135  }136 137  if (task==sys_winmgr_task) {138    "gr.pen_brushes\t:%010X\n",PenBrushesSize;139    "gr.scrn_zoom_tbles\t:%010X\n",ScrnZoomTablesSize;140  } else if (task==adam_task) {141    j=0;k=0;m=0;n=0;142    for (i=0;i<mp_cnt;i++) {143      c=&cpu_structs[i];144      k+=TSSSize(c->tss);145      task1=c->seth_task;146      do {147        if (task1!=adam_task) {//adam task located in Kernel mem148          j+=MSize2(task1);149          m+=MSize2(task1->code_heap);150          if (task1->data_heap!=task1->code_heap)151            m+=MSize2(task1->code_heap);152        }153        n+=TaskQueSize(task1);154        task1=task1->next_task;155      } while (task1!=c->seth_task);156      task1=c->idle_task;157      j+=MSize2(task1);158      m+=MSize2(task1->code_heap);159      if (task1->data_heap!=task1->code_heap)160        m+=MSize2(task1->code_heap);161    }162    "TaskStructs\t:%010X\n",j;163    "TSSes\t:%010X\n",k;164    "HeapCtrls\t:%010X\n",m;165    if (n)166      "TaskQues\t:%010X\n",n;167    "BlkDevs\t:%010X\n",BlkDevsSize;168    "Drvs\t:%010X\n",DrvsSize;169    if (blkdev.cache_base)170      "DskCache\t:%010X\n",171            MSize2(blkdev.cache_base)+MSize2(blkdev.cache_hash_table)+172            MSize2(blkdev.cache_ctrl);173    "Clip\t:%010X\n",DocSize(sys_clip_doc);174    "AutoComplete:%010X\n",CallExtStr("AutoCompleteSize");175    "gr.to_8_bits\t:%010X\n",MSize2(gr.to_8_bits);176    "gr.to_8_colors\t:%010X\n",MSize2(gr.to_8_colors);177    "gr.text_base\t:%010X\n",MSize2(gr.text_base);178    "gr.vga_text_cache\t:%010X\n",MSize2(gr.vga_text_cache);179    "gr.win_z_buf\t:%010X\n",MSize2(gr.win_z_buf)+180          MSize2(gr.win_uncovered_bitmap);181    "gr.dc\t\t:%010X\n",DCSize(gr.dc);182    "gr.dc1\t\t:%010X\n",DCSize(gr.dc1);183    "gr.dc2\t\t:%010X\n",DCSize(gr.dc2);184    "gr.dc_cache\t\t:%010X\n",DCSize(gr.dc_cache);185    "gr.scrn_image\t:%010X\n",DCSize(gr.scrn_image);186    "gr.zoomed_dc\t:%010X\n",DCSize(gr.zoomed_dc);187  }188  "$ID,-2$";189  return TRUE;190}191 192public U0 MemRep()193{//Memory usage report.194  I64 i;195  CTask *task;196  CCPU *c;197  CBinFile *bfh=mem_boot_base-sizeof(CBinFile);198  bfh(I64)+=bfh->file_size-1;199 200  "$BLACK$Low Memory\t:0000100000$FG$\n$ID,2$";201  "Kernel\t:%010X-%010X\n",mem_boot_base-sizeof(CBinFile),bfh;202 203  "VGA\t\t:00000A0000-00000BFFFF\n";204  "$ID,-2$$BLACK$High Memory\t:0000100000-%010X$FG$\n",205        mem_heap_limit;206  "SYS_FIXED_AREA\t:%010X-%010X\n",207        SYS_FIXED_AREA,SYS_FIXED_AREA+sizeof(CSysFixedArea)-1;208 209  if (sys_data_bp) {210    "$BLACK$Code Heap\t:%010X/%010X$FG$\n",211          sys_code_bp->used_u8s,sys_code_bp->alloced_u8s;212    "$BLACK$Data Heap\t:%010X/%010X$FG$\n",213          sys_data_bp->used_u8s,sys_data_bp->alloced_u8s;214  } else215    "$BLACK$Code/Data Heap\t:%010X/%010X$FG$\n",216          sys_code_bp->used_u8s,sys_code_bp->alloced_u8s;217 218  for (i=0;i<mp_cnt;i++) {219    c=&cpu_structs[i];220    "$PURPLE$CPU%d$FG$\n$ID,2$",i;221    task=c->seth_task;222    do {223      if (!MemRepTask(task))224        break;225      task=task->next_task;226    } while (task!=c->seth_task);227    MemRepTask(c->idle_task,TRUE);228    "$ID,-2$";229  }230}231