Blame view
lib/reciprocal_div.c
492 Bytes
809fa972f reciprocal_divide... |
1 |
#include <linux/kernel.h> |
6a2d7a955 [PATCH] SLAB: use... |
2 3 |
#include <asm/div64.h> #include <linux/reciprocal_div.h> |
8af2a218d sch_red: Adaptati... |
4 |
#include <linux/export.h> |
6a2d7a955 [PATCH] SLAB: use... |
5 |
|
809fa972f reciprocal_divide... |
6 7 8 9 10 11 |
/* * For a description of the algorithm please have a look at * include/linux/reciprocal_div.h */ struct reciprocal_value reciprocal_value(u32 d) |
6a2d7a955 [PATCH] SLAB: use... |
12 |
{ |
809fa972f reciprocal_divide... |
13 14 15 16 17 18 19 20 21 22 23 24 25 |
struct reciprocal_value R; u64 m; int l; l = fls(d - 1); m = ((1ULL << 32) * ((1ULL << l) - d)); do_div(m, d); ++m; R.m = (u32)m; R.sh1 = min(l, 1); R.sh2 = max(l - 1, 0); return R; |
6a2d7a955 [PATCH] SLAB: use... |
26 |
} |
8af2a218d sch_red: Adaptati... |
27 |
EXPORT_SYMBOL(reciprocal_value); |