diff options
author | David Herrmann <dh.herrmann@gmail.com> | 2014-12-29 17:51:36 +0100 |
---|---|---|
committer | David Herrmann <dh.herrmann@gmail.com> | 2014-12-30 01:39:01 +0100 |
commit | 180a60bc879ab0554297bc08a7a0b9274b119b55 (patch) | |
tree | 842c1afa088c3c26ce98856bcefde420dc6257c2 /src/libsystemd-network/ipv4ll-network.c | |
parent | 5ef378c1c5ba1a29a461e77685765da81163c853 (diff) |
macro: add DIV_ROUND_UP()
This macro calculates A / B but rounds up instead of down. We explicitly
do *NOT* use:
(A + B - 1) / A
as it suffers from an integer overflow, even though the passed values are
properly tested against overflow. Our test-cases show this behavior.
Instead, we use:
A / B + !!(A % B)
Note that on "Real CPUs" this does *NOT* result in two divisions. Instead,
instructions like idivl@x86 provide both, the quotient and the remainder.
Therefore, both algorithms should perform equally well (I didn't verify
this, though).
Diffstat (limited to 'src/libsystemd-network/ipv4ll-network.c')
0 files changed, 0 insertions, 0 deletions