Re: unsigned long ioremap()?
Abramo Bagnara (abramo@alsa-project.org)
Thu, 03 May 2001 09:53:36 +0200
"David S. Miller" wrote:
> 
> Geert Uytterhoeven writes:
>  > 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.
> 
> There is a school of thought which believes that:
> 
> struct xdev_regs {
>         u32 reg1;
>         u32 reg2;
> };
> 
>         val = readl(®s->reg2);
> 
> is cleaner than:
> 
> #define REG1 0x00
> #define REG2 0x04
> 
>         val = readl(regs + REG2);
> 
> I'm personally ambivalent and believe that both cases should be allowed.
The problem I see is that with the former solution nothing prevents from
to do:
	regs->reg2 = 13;
That's indeed the reason to change ioremap prototype for 2.5.
-- 
Abramo Bagnara                       mailto:abramo@alsa-project.org
Opera Unica                          Phone: +39.546.656023
Via Emilia Interna, 140
48014 Castel Bolognese (RA) - Italy
ALSA project               http://www.alsa-project.org
It sounds good!
-
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/