single, comprehensive kernel data types document?

Greg KH greg at kroah.com
Wed Apr 20 22:51:17 EDT 2016


On Wed, Apr 20, 2016 at 04:37:07PM -0400, Rob Groner wrote:
> Sorry if this isn't related, it seemed like it was...
> 
> I recently discovered one of our drivers isn't written correctly for
> 64-bit.  It uses a uint32_t to hold an address. Whoops.
> 
> In previous drivers when I've needed to hold an address, I've used an
> "unsigned long", as (so far as I could tell) that would give me the
> correct number of bytes whether on 32 or 64-bit systems.
> 
> Now that I have to fix this driver, I'd rather do whatever the
> "standard" method is for storing an address value.
> 
> Looking at code in the kernel and linux/types.h, I see "phys_addr_t and
> dma_addr_t.  Is that what I want to use?  What if it's a virtual
> address?  void *?

You want to use '__u64' and cast properly within the kernel to a
pointer.

hope this helps,

greg k-h



More information about the Kernelnewbies mailing list