Re: Using intptr_t and uintptr_t in Kernel

From: Mikael Pettersson
Date: Tue Oct 13 2009 - 04:50:46 EST


Leonidas . writes:
> I know variants of this questions have been asked on this list before,
> but I could not
> find a thread where a conclusion was reached, most of the time
> responses were { I don't care,
> developer's choice, might be in future } and variations thereof. But
> one thing was clear
> that do not mix userspace and kernel space data types.
>
> Currently, I am porting a user space application to kernel, this app
> uses intptr_t data type.
>
> A look at linux/types.h shows that,
>
> typedef unsigned long uintptr_t;
>
> but intptr_t is not defined at all. Also, isn't above definition
> incorrect?

No, it's correct because Linux requires sizeof(void*) == sizeof(long).

> Since the whole idea
> behind uintptr_t is to store pointer in a int sized variable,

uintptr_t will use _some_ integer type, not necessarily 'int'.

If ISO C said 'int' there would be no need for {,u}intptr_t.

> are we
> not assuming here that
>
> sizeof(int) = sizeof(unsigned long ) on all archs?

No, see above.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/