summaryrefslogtreecommitdiff
path: root/apps/debug_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/debug_menu.c')
-rw-r--r--apps/debug_menu.c86
1 files changed, 63 insertions, 23 deletions
diff --git a/apps/debug_menu.c b/apps/debug_menu.c
index 61698f5025..75e23b3945 100644
--- a/apps/debug_menu.c
+++ b/apps/debug_menu.c
@@ -528,14 +528,19 @@ static const char* dbg_partitions_getname(int selected_item, void *data,
528{ 528{
529 (void)data; 529 (void)data;
530 int partition = selected_item/2; 530 int partition = selected_item/2;
531 struct partinfo* p = disk_partinfo(partition); 531
532 struct partinfo p;
533 if (!disk_partinfo(partition, &p))
534 return buffer;
535
532 if (selected_item%2) 536 if (selected_item%2)
533 { 537 {
534 snprintf(buffer, buffer_len, " T:%x %ld MB", p->type, p->size / ( 2048 / ( SECTOR_SIZE / 512 ))); 538 snprintf(buffer, buffer_len, " T:%x %ld MB", p.type,
539 p.size / ( 2048 / ( SECTOR_SIZE / 512 )));
535 } 540 }
536 else 541 else
537 { 542 {
538 snprintf(buffer, buffer_len, "P%d: S:%lx", partition, p->start); 543 snprintf(buffer, buffer_len, "P%d: S:%lx", partition, p.start);
539 } 544 }
540 return buffer; 545 return buffer;
541} 546}
@@ -1377,7 +1382,7 @@ static int disk_callback(int btn, struct gui_synclist *lists)
1377 simplelist_addline( 1382 simplelist_addline(
1378 "Size: %s", buf); 1383 "Size: %s", buf);
1379 unsigned long free; 1384 unsigned long free;
1380 fat_size( IF_MV(0,) NULL, &free ); 1385 volume_size( IF_MV(0,) NULL, &free );
1381 simplelist_addline( 1386 simplelist_addline(
1382 "Free: %ld MB", free / 1024); 1387 "Free: %ld MB", free / 1024);
1383 simplelist_addline( 1388 simplelist_addline(
@@ -1469,7 +1474,7 @@ static int disk_callback(int btn, struct gui_synclist *lists)
1469 "No timing info"); 1474 "No timing info");
1470 } 1475 }
1471 simplelist_addline( 1476 simplelist_addline(
1472 "Cluster size: %d bytes", fat_get_cluster_size(IF_MV(0))); 1477 "Cluster size: %d bytes", volume_get_cluster_size(IF_MV(0)));
1473#ifdef HAVE_ATA_DMA 1478#ifdef HAVE_ATA_DMA
1474 i = ata_get_dma_mode(); 1479 i = ata_get_dma_mode();
1475 if (i == 0) { 1480 if (i == 0) {
@@ -1496,11 +1501,11 @@ static int disk_callback(int btn, struct gui_synclist *lists)
1496 simplelist_addline( 1501 simplelist_addline(
1497 "Size: %ld MB", info.num_sectors*(info.sector_size/512)/2024); 1502 "Size: %ld MB", info.num_sectors*(info.sector_size/512)/2024);
1498 unsigned long free; 1503 unsigned long free;
1499 fat_size( IF_MV(0,) NULL, &free ); 1504 volume_size( IF_MV(0,) NULL, &free );
1500 simplelist_addline( 1505 simplelist_addline(
1501 "Free: %ld MB", free / 1024); 1506 "Free: %ld MB", free / 1024);
1502 simplelist_addline( 1507 simplelist_addline(
1503 "Cluster size: %d bytes", fat_get_cluster_size(IF_MV(0))); 1508 "Cluster size: %d bytes", volume_get_cluster_size(IF_MV(0)));
1504 return btn; 1509 return btn;
1505} 1510}
1506#endif 1511#endif
@@ -1542,29 +1547,64 @@ static bool dbg_disk_info(void)
1542#ifdef HAVE_DIRCACHE 1547#ifdef HAVE_DIRCACHE
1543static int dircache_callback(int btn, struct gui_synclist *lists) 1548static int dircache_callback(int btn, struct gui_synclist *lists)
1544{ 1549{
1545 (void)lists; 1550 struct dircache_info info;
1551 dircache_get_info(&info);
1552
1553 if (global_settings.dircache)
1554 {
1555 switch (btn)
1556 {
1557 case ACTION_STD_CONTEXT:
1558 splash(HZ/2, "Rebuilding cache");
1559 dircache_suspend();
1560 *(int *)lists->data = dircache_resume();
1561 case ACTION_UNKNOWN:
1562 btn = ACTION_NONE;
1563 break;
1564 #ifdef DIRCACHE_DUMPSTER
1565 case ACTION_STD_OK:
1566 splash(0, "Dumping cache");
1567 dircache_dump();
1568 btn = ACTION_NONE;
1569 break;
1570 #endif /* DIRCACHE_DUMPSTER */
1571 case ACTION_STD_CANCEL:
1572 if (*(int *)lists->data > 0 && info.status == DIRCACHE_SCANNING)
1573 {
1574 splash(HZ, str(LANG_SCANNING_DISK));
1575 btn = ACTION_NONE;
1576 }
1577 break;
1578 }
1579 }
1580
1546 simplelist_set_line_count(0); 1581 simplelist_set_line_count(0);
1547 simplelist_addline("Cache initialized: %s", 1582
1548 dircache_is_enabled() ? "Yes" : "No"); 1583 simplelist_addline("Cache status: %s", info.statusdesc);
1549 simplelist_addline("Cache size: %d B", 1584 simplelist_addline("Last size: %lu B", info.last_size);
1550 dircache_get_cache_size()); 1585 simplelist_addline("Size: %lu B", info.size);
1551 simplelist_addline("Last size: %d B", 1586 unsigned int utilized = info.size ? 1000ull*info.sizeused / info.size : 0;
1552 global_status.dircache_size); 1587 simplelist_addline("Used: %lu B (%u.%u%%)", info.sizeused,
1553 simplelist_addline("Limit: %d B", 1588 utilized / 10, utilized % 10);
1554 DIRCACHE_LIMIT); 1589 simplelist_addline("Limit: %lu B", info.size_limit);
1555 simplelist_addline("Reserve: %d/%d B", 1590 simplelist_addline("Reserve: %lu/%lu B", info.reserve_used, info.reserve);
1556 dircache_get_reserve_used(), DIRCACHE_RESERVE); 1591 long ticks = ALIGN_UP(info.build_ticks, HZ / 10);
1557 simplelist_addline("Scanning took: %d s", 1592 simplelist_addline("Scanning took: %ld.%ld s",
1558 dircache_get_build_ticks() / HZ); 1593 ticks / HZ, (ticks*10 / HZ) % 10);
1559 simplelist_addline("Entry count: %d", 1594 simplelist_addline("Entry count: %u", info.entry_count);
1560 dircache_get_entry_count()); 1595
1596 if (btn == ACTION_NONE)
1597 btn = ACTION_REDRAW;
1598
1561 return btn; 1599 return btn;
1600 (void)lists;
1562} 1601}
1563 1602
1564static bool dbg_dircache_info(void) 1603static bool dbg_dircache_info(void)
1565{ 1604{
1566 struct simplelist_info info; 1605 struct simplelist_info info;
1567 simplelist_info_init(&info, "Dircache Info", 7, NULL); 1606 int syncbuild = 0;
1607 simplelist_info_init(&info, "Dircache Info", 8, &syncbuild);
1568 info.action_callback = dircache_callback; 1608 info.action_callback = dircache_callback;
1569 info.hide_selection = true; 1609 info.hide_selection = true;
1570 info.scroll_all = true; 1610 info.scroll_all = true;