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