Thread (2 messages) flat view 2 messages, 2 authors, 2015-08-06

Re: [RFC v4] genalloc:support memory-allocation with bytes-alignment to genalloc

From: Scott Wood <hidden>
Date: 2015-08-06 03:14:01
Also in: lkml

On Wed, 2015-08-05 at 14:50 +0800, Zhao Qiang wrote:
Bytes alignment is required to manage some special RAM,
so add gen_pool_first_fit_align to genalloc,
meanwhile add gen_pool_alloc_data to pass data to
gen_pool_first_fit_align(modify gen_pool_alloc as a wrapper)

Signed-off-by: Zhao Qiang <redacted>
---
*v2:
changes:
title has been modified, original patch link: 
http://patchwork.ozlabs.org/patch/493297/

original patch add a func gen_pool_alloc_align, 
then pass alignment to it as an parameter.
after discussing with lauraa and scott, they recommend 
to pass alignment as part of data based on 
commit message for ca279cf1065fb689abea1dc7d8c11787729bb185 which adds 
"data":

"As I can't predict all the possible requirements/needs for all allocation  
  
uses cases, I add a "free" field 'void *data' to pass any needed     
information to the allocation function.  For example 'data' could be used   
  
to handle a structure where you store the alignment, the expected memory    
bank, the requester device, or any information that could influence the     
allocation algorithm."

*v3:
changes:
title has been modified, original patch link: 
http://patchwork.ozlabs.org/patch/500317/

according to the comments, add gen_pool_alloc_data,
modify gen_pool_alloc as a wrapper, define struct data_align
for gen_pool_first_fit_align algorithm. add parameter 
pointer pool to algorithm.

*v4:
changes:
v3 link: 
http://patchwork.ozlabs.org/patch/500317/
There are comments for v3, according to the comments,
modify the patch for v4. such as modifying annotations,
removing unnecessary chek, removing unnecessary cast and so on.

 include/linux/genalloc.h | 23 +++++++++++++++----
 lib/genalloc.c           | 58 +++++++++++++++++++++++++++++++++++++++++++--
---
 2 files changed, 72 insertions(+), 9 deletions(-)
Looks good to me (except a minor change to the comments described below); 
send a non-RFC patch with the patches that use it.
quoted hunk ↗ jump to hunk
@@ -500,15 +518,42 @@ EXPORT_SYMBOL(gen_pool_set_algo);
  * @start: The bitnumber to start searching at
  * @nr: The number of zeroed bits we're looking for
  * @data: additional data - unused
+ * @pool: unused, but the algorithm functions have same format.
  */
Describe what pool actually is.  Whether it's used is irrelevant (and you can 
assume the reader knows that all algorithm functions have the same 
signature).  @data is different because it's defined per-algorithm and thus 
unused means no definition.

In other words, the purpose of these headers is to be a guide to the caller 
of the function, describing the API, not the function internals.

-Scott
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help