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