struct FractionalBytes

Defined at line 29 of file ../../zircon/kernel/vm/include/vm/attribution.h

Structure to store fractional counts of bytes in fixed point with 63 bits of precision. The max

fractional value is thus `2-Fraction::Epsilon()`. Counts are strictly unsigned.

This structure supports accumulation with other fractional counts and the code will handle the

internal bookkeeping around moving whole bytes from the fractional sum to the integral sum.

The structure also supports addition, subtraction, and division with whole integers. If overflow

occurs in either direction, an assert is fired. Multiplication is not supported.

We always check and guarantee that any fractional sums >=1 have the excess byte stripped off

and rolled over to the integral value. Thus, since accumulation always operates on fractions

`

<

=1-Fraction::Epsilon()`, it always generates results `

<

= 2-Fraction::Epsilon()` and there is

never overflow in the fractional fields.

Public Members

size_t integral
Fixed fractional
static Fixed kOneByte
static const uint64_t kOneByteValue

Public Methods

void FractionalBytes ()

Defined at line 33 of file ../../zircon/kernel/vm/include/vm/attribution.h

void FractionalBytes (uint64_t whole_bytes)

Defined at line 35 of file ../../zircon/kernel/vm/include/vm/attribution.h

void FractionalBytes (uint64_t numerator, uint64_t denominator)

Defined at line 36 of file ../../zircon/kernel/vm/include/vm/attribution.h

FractionalBytes operator+ (const uint64_t & other)

Defined at line 40 of file ../../zircon/kernel/vm/include/vm/attribution.h

FractionalBytes operator- (const uint64_t & other)

Defined at line 45 of file ../../zircon/kernel/vm/include/vm/attribution.h

FractionalBytes operator/ (const uint64_t & other)

Defined at line 50 of file ../../zircon/kernel/vm/include/vm/attribution.h

FractionalBytes & operator+= (const uint64_t & other)

Defined at line 55 of file ../../zircon/kernel/vm/include/vm/attribution.h

FractionalBytes & operator-= (const uint64_t & other)

Defined at line 60 of file ../../zircon/kernel/vm/include/vm/attribution.h

FractionalBytes & operator/= (const uint64_t & other)

Defined at line 65 of file ../../zircon/kernel/vm/include/vm/attribution.h

FractionalBytes operator+ (const FractionalBytes & other)

Defined at line 84 of file ../../zircon/kernel/vm/include/vm/attribution.h

FractionalBytes & operator+= (const FractionalBytes & other)

Defined at line 89 of file ../../zircon/kernel/vm/include/vm/attribution.h

bool operator== (const FractionalBytes & other)

Defined at line 106 of file ../../zircon/kernel/vm/include/vm/attribution.h

bool operator!= (const FractionalBytes & other)

Defined at line 109 of file ../../zircon/kernel/vm/include/vm/attribution.h