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