On Mon, Sep 23, 2024 at 10:07:48AM +0200, H. Nikolaus Schaller wrote:
You can't store a 64 bit pointer in an 32 bit unsigned int without getting into trouble on conversion back :) That is what uintptr_t is intended for, but it is also just an unsigned long in linux/types.h. AFAIK it is defined by C99 as "unsigned integer type capable of holding a pointer".
Practically speaking the kernel C code assumes that uintptr_t is the same size as unsigned long and there's a whole bunch of porting would be needed if you want to change that. unintptr_t is a relatively new thing compared to the C that the kernel originally targeted.