Messages in this thread | | | From | Andries.Brouwer@cwi ... | Date | Mon, 4 Aug 2003 04:03:53 +0200 (MEST) | Subject | do_div considered harmful |
| |
Writing this ide capacity patch an hour ago or so I split off a helper sectors_to_MB() since Erik's recent patch uses this also. Now that I compare, he wrote nativeMb = do_div(nativeMb, 1000000); to divide nativeMb by 1000000. Similarly, I find in fs/cifs/inode.c inode->i_blocks = do_div(findData.NumOfBytes, inode->i_blksize);
So, it seems natural to expect that do_div() gives the quotient. But it gives the remainder. (Strange, Erik showed correct output.)
Since the semantics of this object are very unlike that of a C function, I wonder whether we should write DO_DIV instead, or DO_DIV_AND_REM to show that a remainder is returned.
Andries - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |