Subject: Re: [PATCH] powerpc: change rheap functions to use long integers instead of pointers

From: Timur Tabi <[email-masked]>
Date: Wed, 04 Apr 2007 12:42:50 -0500

Kumar Gala wrote:

> I'm concerned the error handling isn't correctly.  What happens if  
> the rheap I'm managing has addresses at 0xf0000000.  When I compare  
> offset to 0, its going to report as an error, even if the offset  
> returned is valid.

The return value is an offset INTO the actual buffer.  Unless you have buffer larger than 
2GB, the return value will never be negative unless it's an error.  So technically, the 
maximum size of the remote heap is 2GB.  It doesn't matter where it was located.

Please keep in mind that I'm not changing the actual numeric values that are being 
returned.  I'm only changing the types, because they were wrong.  rh_alloc() was returning 
a void pointer, but it was NEVER a pointer.  It was always a simple offset.  The first 
time you call rh_alloc(), you will get back a value of 0, because that's the beginning of 
the heap.  This patch doesn't change that.  It changes the types.

Having said that, the code used to support heaps as large as 4GB - 4096, and now it 
supports heaps as large as 2GB.  I don't think that's a problem, but I can add a comment 
to that effect in the changelog.

-- 
Timur Tabi
Linux Kernel Developer @ Freescale