LWN.net Logo

Memory Binding (0/1)

From:  Matthew Dobson <colpatch@us.ibm.com>
To:  linux-kernel <linux-kernel@vger.kernel.org>
Subject:  [patch][rfc] Memory Binding (0/1)
Date:  Tue, 01 Apr 2003 14:31:55 -0800
Cc:  Andrew Morton <akpm@digeo.com>, "Martin J. Bligh" <mbligh@aracnet.com>

So I've made a couple attempts at adding a Memory Binding facility to 
the kernel.  Obviously, I've had no success as yet, so I'm stubbornly 
trying another approach! ;)

This patch is just a small pre-patch to the real memory binding.  It 
just adds get_zonelist() and get_node_zonelist() calls, to make some 
code a little more readable.  This patch is super straight-forward.  The 
real fun is in the next patch...

[mcd@arrakis membind]$ diffstat 00-pre_membind.patch
  gfp.h    |    2 +-
  mmzone.h |    8 ++++++++
  2 files changed, 9 insertions(+), 1 deletion(-)

-Matt
diff -Nur --exclude-from=/usr/src/.dontdiff linux-2.5.66-vanilla/include/linux/gfp.h linux-2.5.66-pre_membind/include/linux/gfp.h
--- linux-2.5.66-vanilla/include/linux/gfp.h	Mon Mar 24 14:00:10 2003
+++ linux-2.5.66-pre_membind/include/linux/gfp.h	Mon Mar 31 17:38:47 2003
@@ -52,7 +52,7 @@
 	if (unlikely(order >= MAX_ORDER))
 		return NULL;
 
-	return __alloc_pages(gfp_mask, order, NODE_DATA(nid)->node_zonelists + (gfp_mask & GFP_ZONEMASK));
+	return __alloc_pages(gfp_mask, order, get_node_zonelist(nid, gfp_mask));
 }
 
 #define alloc_pages(gfp_mask, order) \
diff -Nur --exclude-from=/usr/src/.dontdiff linux-2.5.66-vanilla/include/linux/mmzone.h linux-2.5.66-pre_membind/include/linux/mmzone.h
--- linux-2.5.66-vanilla/include/linux/mmzone.h	Mon Mar 24 14:00:45 2003
+++ linux-2.5.66-pre_membind/include/linux/mmzone.h	Mon Mar 31 17:38:47 2003
@@ -326,6 +326,14 @@
 #define num_online_memblks()		1
 
 #endif /* CONFIG_DISCONTIGMEM || CONFIG_NUMA */
+
+static inline struct zonelist *get_node_zonelist(int nid, int gfp_mask)
+{
+	return NODE_DATA(nid)->node_zonelists + (gfp_mask & GFP_ZONEMASK);
+}
+
+#define get_zonelist(gfp_mask) get_node_zonelist(numa_node_id(), gfp_mask)
+
 #endif /* !__ASSEMBLY__ */
 #endif /* __KERNEL__ */
 #endif /* _LINUX_MMZONE_H */

Copyright © 2003, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds