Changeset 852664b9 in mainline for uspace/lib/fdisk/src/fdisk.c


Ignore:
Timestamp:
2015-10-21T09:55:49Z (9 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
21f1543
Parents:
b598460a
Message:

Display total free space size.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/fdisk/src/fdisk.c

    rb598460a r852664b9  
    763763}
    764764
     765/** Get size of largest free block. */
    765766int fdisk_part_get_max_avail(fdisk_dev_t *dev, fdisk_spc_t spc, fdisk_cap_t *cap)
    766767{
     
    783784
    784785        cap->value = nb * dev->dinfo.block_size;
     786        cap->cunit = cu_byte;
     787        return EOK;
     788}
     789
     790/** Get total free space capacity. */
     791int fdisk_part_get_tot_avail(fdisk_dev_t *dev, fdisk_spc_t spc,
     792    fdisk_cap_t *cap)
     793{
     794        fdisk_free_range_t fr;
     795        uint64_t hdrb;
     796        uint64_t b0;
     797        uint64_t nb;
     798        uint64_t totb;
     799
     800        if (spc == spc_log)
     801                hdrb = max(1, dev->align);
     802        else
     803                hdrb = 0;
     804
     805        totb = 0;
     806        fdisk_free_range_first(dev, spc, &fr);
     807        do {
     808                if (fdisk_free_range_get(&fr, &b0, &nb)) {
     809                        if (nb > hdrb)
     810                                totb += nb - hdrb;
     811                }
     812        } while (fdisk_free_range_next(&fr));
     813
     814        cap->value = totb * dev->dinfo.block_size;
    785815        cap->cunit = cu_byte;
    786816        return EOK;
Note: See TracChangeset for help on using the changeset viewer.