Contrary to the description, the first parameter (n) should not be
passed as a pointer, but directly as an lvalue. This is possible because
do_div is a macro.
Signed-off-by: Jonathan Neuschäfer <[email protected]>
---
include/asm-generic/div64.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/asm-generic/div64.h b/include/asm-generic/div64.h
index dc9726fdac8f..b2a9c74efa55 100644
--- a/include/asm-generic/div64.h
+++ b/include/asm-generic/div64.h
@@ -28,12 +28,12 @@
/**
* do_div - returns 2 values: calculate remainder and update new dividend
- * @n: pointer to uint64_t dividend (will be updated)
+ * @n: uint64_t dividend (will be updated)
* @base: uint32_t divisor
*
* Summary:
- * ``uint32_t remainder = *n % base;``
- * ``*n = *n / base;``
+ * ``uint32_t remainder = n % base;``
+ * ``n = n / base;``
*
* Return: (uint32_t)remainder
*
--
2.20.1
Hi Jonathan,
On Mon, Feb 25, 2019 at 3:05 PM Jonathan Neuschäfer
<[email protected]> wrote:
> Contrary to the description, the first parameter (n) should not be
> passed as a pointer, but directly as an lvalue. This is possible because
> do_div is a macro.
>
> Signed-off-by: Jonathan Neuschäfer <[email protected]>
Thanks for your patch!
Reviewed-by: Geert Uytterhoeven <[email protected]>
Shouldn't the "semantics" at the top of include/asm-generic/div64.h be
updated, too?
As this can't be expressed in a C function, perhaps that should be done
using C++ syntax, like
uint32_t do_div(uint64_t &n, uint32_t base)
{
...
}
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
On Mon, Feb 25, 2019 at 04:19:02PM +0100, Geert Uytterhoeven wrote:
> Hi Jonathan,
>
> On Mon, Feb 25, 2019 at 3:05 PM Jonathan Neuschäfer
> <[email protected]> wrote:
> > Contrary to the description, the first parameter (n) should not be
> > passed as a pointer, but directly as an lvalue. This is possible because
> > do_div is a macro.
> >
> > Signed-off-by: Jonathan Neuschäfer <[email protected]>
>
> Thanks for your patch!
>
> Reviewed-by: Geert Uytterhoeven <[email protected]>
>
> Shouldn't the "semantics" at the top of include/asm-generic/div64.h be
> updated, too?
Arguably, it's semantically close enough. I'm not sure.
> As this can't be expressed in a C function, perhaps that should be done
> using C++ syntax, like
>
> uint32_t do_div(uint64_t &n, uint32_t base)
> {
> ...
> }
That might confuse some people who aren't expecting C++ syntax.
I'll leave this as is, because I can't decide wether this is an
improvement.
Thanks,
Jonathan Neuschäfer