Messages in this thread | | | Date | Fri, 14 Jan 2005 18:21:02 -0800 | From | David Mosberger <> | Subject | sparse warning, or why does jifies_to_msecs() return an int? |
| |
I'm seeing the following warning from sparse:
include/linux/jiffies.h:262:9: warning: cast truncates bits from constant value (3ffffffffffffffe becomes fffffffe)
it took me a while to realize that this is due to the jiffies_to_msecs(MAX_JIFFY_OFFSET) call in msecs_to_jiffies() and due to the fact that jiffies_to_msecs() returns only an "unsigned int".
Is there are a good reason to constrain the return value to 4 billion msecs? If so, what's the proper way to shut up sparse?
On a related note, there seem to be some overflow issues in jiffies_to_{msec,usec}. For example:
return (j * 1000) / HZ;
can overflow if j > MAXULONG/1000, which is the case for MAX_JIFFY_OFFSET.
I think it would be better to use:
return 1000*(j/HZ) + 1000*(j%HZ)/HZ;
instead. No?
--david - 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/
| |