diff options
Diffstat (limited to 'apps/debug_menu.c')
-rw-r--r-- | apps/debug_menu.c | 86 |
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 |
1543 | static int dircache_callback(int btn, struct gui_synclist *lists) | 1548 | static 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 | ||
1564 | static bool dbg_dircache_info(void) | 1603 | static 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; |