Re: gcc warning in my trace_benchmark() code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 05 Jun 2014 14:56:24 -0700
David Daney <ddaney.cavm@xxxxxxxxx> wrote:

 
> Evidently it is.
> 
> The top of asm-generic/div64.h has:
> 
> .
> .
> .
>   * The semantics of do_div() are:
>   *
>   * uint32_t do_div(uint64_t *n, uint32_t base)
>   * {

That's somewhat lacking. Does this mean that we have no consistent way
to divide a s64 number?

> .
> .
> .
> 
> do_div() really passes the first parameter by reference, and C doesn't 
> have by reference parameters, so the example is not quite right.  But it 
> does seem to imply the thing should be an *unsigned* 64-bit wide variable.
> 
> It has been like this since the beginning of the git epoch.
> 
> > Where is that documented.
> 
> The code is the documentation.
> 
> > I don't
> > see it in the comments, and I don't see anything in the Documentation
> > directory. It only states that n must be 64bit. It doesn't say unsigned
> > 64 bit.
> 
> The handful of call sites I examined, seem to all use u64 or unsigned 
> long long.

and u64 and unsigned long long are usually the standard type to use for
64 bits.

> 
> I get:
> 
>    $ grep -r do_div Documentation | wc
>        0       0       0
> 
> So it would seem that most of the do_div() documentation actually is the 
> code.
> 

Which means there isn't documentation for it.

Anyway, this probably can be safely converted to an unsigned. As I'm
not sure standard deviation can ever be negative.

-- Steve


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux