Exemple #1
0
Err show_heap_info() {

  Err err;
  UInt16 numHeaps, numRAMHeaps, version;
  UInt16 heapNo, heapId;
  UInt32 free, max, heapSize;
  Char tmp_text[100], tmp_textd1[100], tmp_textd2[100];
  FormPtr form;

  // Initialize the form.
  form = FrmInitForm(formID_heap_info);

  // Initialize the form.
  if (cardNo > MemNumCards()) {
    FrmAlert(alertID_no_card);
    return err;
  }

  numHeaps = MemNumHeaps(cardNo-1);
  StrPrintF(tmp_text, "Num. heaps: %u", numHeaps);
  show_lab(form, labelID_num_heaps, tmp_text);
  numRAMHeaps = MemNumRAMHeaps(cardNo-1);
  StrPrintF(tmp_text, "Num. RAM heaps: %u", numRAMHeaps);
  show_lab(form, labelID_num_RAM_heaps, tmp_text);

  for (heapNo=0; heapNo < numHeaps && heapNo < 3; heapNo++) {
      heapId = MemHeapID(cardNo-1,heapNo);
      heapSize = MemHeapSize(heapId);
      err = MemHeapFreeBytes(heapId, &free, &max);
      if (err) return err;
      if (heapNo < numRAMHeaps) {
	StrPrintF(tmp_text,
		  "RAM Heap %d is %s", 
		  heapNo, (MemHeapDynamic(heapId))?("dynamic"):("non-dynamic"));
	StrPrintF(tmp_textd1, "Free: %lu Kb.", free);
	StrPrintF(tmp_textd2, "Max. chunk: %lu Kb.", max);
      }
      else {
	StrPrintF(tmp_text, "ROM Heap %d", heapNo);
	StrPrintF(tmp_textd1, "Free: %lu Kb.", free);
	StrPrintF(tmp_textd2, "Max chunk: %lu Kb.", max);
      }
      switch (heapNo) {
      case 0: 
	show_lab(form, labelID_heap1, tmp_text);
	show_lab(form, labelID_heap1d1, tmp_textd1);
	show_lab(form, labelID_heap1d2, tmp_textd2);	
      case 1: 
	show_lab(form, labelID_heap2, tmp_text);
	show_lab(form, labelID_heap2d1, tmp_textd1);
	show_lab(form, labelID_heap2d2, tmp_textd2);
      default: 
	show_lab(form, labelID_heap3, tmp_text);
	show_lab(form, labelID_heap3d1, tmp_textd1);
	show_lab(form, labelID_heap3d2, tmp_textd2);
      }
  }
  display_modal_form(form);
  return err;
}
Exemple #2
0
// Get free memory in bytes, or -1 if cannot determine amount (e.g. on UNIX)
wxMemorySize wxGetFreeMemory()
{
    uint32_t freeTotal = 0;
    uint32_t freeHeap;
    uint32_t freeChunk;

    // executed twice: for the dynamic heap, and for the non-secure RAM storage heap
    for ( uint16_t i = 0; i < POS_MemNumRAMHeaps(); i ++)
    {
        status_t err = MemHeapFreeBytes(i, &freeHeap, &freeChunk);
        if( err != errNone )
            return -1;
        freeTotal+=freeHeap;
    }

    return (wxMemorySize)freeTotal;
}
Exemple #3
0
Regionpage *mem_ptr_new() {
  UInt32 free, max;
  Err err;
  Regionpage *rp;

  err = MemHeapFreeBytes(heapId, &free, &max);
  if (err)
    panic("mem_ptr_new: MemHeapFreeBytes");
  if (max < 5*1024) {
    // Use storage memory
    panic("Use storage memory.");
    rp = NULL;
  }
  else {
    // Use dynamic memory
    rp = (Regionpage *)MemPtrNew(sizeof(Regionpage));
    if (rp == NULL)
      panic("mem_ptr_new: I cound not allocate more memory");
  }
  return rp;
}