Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


HUMANIZE_NUMBER(9)         Kernel Developer's Manual        HUMANIZE_NUMBER(9)

NAME
     humanize_number, format_bytes - human readable numbers

SYNOPSIS
     int
     humanize_number(char *buf, size_t len, uint64_t number,
         const char *suffix, int divisor);

     int
     format_bytes(char *buf, size_t len, uint64_t number);

DESCRIPTION
     The humanize_number() function formats the unsigned 64-bit quantity given
     in number into buf.  A space and then suffix is appended to the end.  The
     supplied buf must be at least len bytes long.

     If the formatted number (including suffix) is too long to fit into buf,
     humanize_number() divides number by divisor until it will fit.  In this
     case, suffix is prefixed with the appropriate SI designator.  Suitable
     values of divisor are 1024 or 1000 to remain consistent with the common
     meanings of the SI designator prefixes.

     The prefixes are:

           Prefix    Description    Multiplier
           k         kilo           1024
           M         mega           1048576
           G         giga           1073741824
           T         tera           1099511627776
           P         peta           1125899906842624
           E         exa            1152921504606846976

     The len argument must be at least 4 plus the length of suffix, in order
     to ensure a useful result in buf.

     The format_bytes() function is a front-end to humanize_number().  It
     calls the latter with a suffix of "B".  Also, if the suffix in the
     returned buf would not have a prefix, the suffix is removed.  This means
     that a result of "100000" occurs, instead of "100000 B".

RETURN VALUES
     Both functions return the number of characters stored in buf (excluding
     the terminating NUL) upon success, or -1 upon failure.

SEE ALSO
     humanize_number(3)

HISTORY
     These functions first appeared in NetBSD 1.5.

NetBSD 10.99                    August 7, 2010                    NetBSD 10.99