Re: unsigned long ioremap()?

From: Jonathan Lundell (jlundell@pobox.com)
Date: Thu May 03 2001 - 02:33:02 EST


At 8:55 AM +0200 2001-05-03, Geert Uytterhoeven wrote:
>Since you're not allowed to use direct memory dereferencing on ioremapped
>areas, wouldn't it be more logical to let ioremap() return an unsigned long
>instead of a void *?
>
>Of course we then have to change readb() and friends to take a long as well,
>but at least we'd get compiler warnings when someone tries to do a direct
>dereference.

Better yet, seems to me, its own type. Say: typedef unsigned long io_ref_t;

It's already done for dma_addr_t, and this seems like an analogous case.

The bigger job would be to fix all the direct dereferences (a
worthwhile thing, I guess; a quick scan shows at least a few), as
well as to fix uncast assignments of ioremap(). Or ideally to get rid
of the casts (most that I see are casts to unsigned long) and type
the receiving buffer appropriately.

It'd be a big job. And Linus further suggests that ioremap's first
argument is an architecture-specific object, not necessarily either a
physical CPU address or a PCI address (though it's typically both in
many (most?) i386 implementations). Now *there'd* be a cleanup.

-- 
/Jonathan Lundell.
-
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/



This archive was generated by hypermail 2b29 : Mon May 07 2001 - 21:00:15 EST