On Mon, 2007-11-19 at 14:52 -0500, Mathieu Desnoyers wrote: > * Dave Hansen ([EMAIL PROTECTED]) wrote: > > On Mon, 2007-11-19 at 13:52 -0500, Mathieu Desnoyers wrote: > > > > > So I guess the result is a pointer ? Should this be expected ? > > > > > > > > Nope. 'pointer - pointer' is an integer. Just solve this equation for > > > > integer: > > > > > > > > 'pointer + integer = pointer' > > > > > > > > > > Well, using page_to_pfn turns out to be ugly in markers (and in > > > printks) then. Depending on the architecture, it will result in either > > > an unsigned long (x86_64) or an unsigned int (i386), which corresponds > > > to %lu or %u and will print a warning if we don't cast it explicitly. > > > > Casting the i386 one to be an unconditional 'unsigned long' shouldn't be > > an issue. We don't generally expect pfns to fit into ints anyway. > > So would this make sense ? > > Cast __page_to_pfn to unsigned long in CONFIG_SPARSEMEM > > Make sure the type returned by __page_to_pfn is always unsigned long. If we > don't cast it explicitly, it can be int on i386, but long on x86_64. This is > especially inelegant for printks.
The only thing I might suggest doing differently is actually using the page_to_pfn() definition itself: memory_model.h:#define page_to_pfn __page_to_pfn The full inline function version should do this already, and we shouldn't have any real direct __page_to_pfn() users anyway. -- Dave - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/