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

Public Methods

void FractionalBytes ()

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

void FractionalBytes (uint64_t whole_bytes)

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

void FractionalBytes (uint64_t numerator, uint64_t denominator)

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

FractionalBytes operator+ (const uint64_t & other)

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

FractionalBytes operator- (const uint64_t & other)

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

FractionalBytes operator/ (const uint64_t & other)

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

FractionalBytes & operator+= (const uint64_t & other)

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

FractionalBytes & operator-= (const uint64_t & other)

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

FractionalBytes & operator/= (const uint64_t & other)

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

FractionalBytes operator+ (const FractionalBytes & other)

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

FractionalBytes & operator+= (const FractionalBytes & other)

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

bool operator== (const FractionalBytes & other)

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

bool operator!= (const FractionalBytes & other)

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