[Openmp-commits] [PATCH] D26001: Use getpagesize() instead of PAGE_SIZE macro when KMP_OS_LINUX is true
Victor Campos via Openmp-commits
openmp-commits at lists.llvm.org
Wed Oct 26 12:10:04 PDT 2016
vhscampos updated this revision to Diff 75926.
vhscampos added a comment.
I have applied the suggestions.
https://reviews.llvm.org/D26001
Files:
runtime/src/kmp_alloc.c
runtime/src/kmp_os.h
runtime/src/kmp_runtime.c
Index: runtime/src/kmp_runtime.c
===================================================================
--- runtime/src/kmp_runtime.c
+++ runtime/src/kmp_runtime.c
@@ -347,8 +347,10 @@
int lastNode;
int localProc = __kmp_get_cpu_from_gtid(gtid);
- p1 = (void *)( (size_t)p1 & ~((size_t)PAGE_SIZE - 1) );
- p2 = (void *)( ((size_t) p2 - 1) & ~((size_t)PAGE_SIZE - 1) );
+ const int page_size = KMP_GET_PAGE_SIZE();
+
+ p1 = (void *)( (size_t)p1 & ~((size_t)page_size - 1) );
+ p2 = (void *)( ((size_t) p2 - 1) & ~((size_t)page_size - 1) );
if(localProc >= 0)
__kmp_printf_no_lock(" GTID %d localNode %d\n", gtid, localProc>>1);
else
@@ -360,17 +362,17 @@
lastNode = node;
/* This loop collates adjacent pages with the same host node. */
do {
- (char*)p1 += PAGE_SIZE;
+ (char*)p1 += page_size;
} while(p1 <= p2 && (node = __kmp_get_host_node(p1)) == lastNode);
__kmp_printf_no_lock(" %p-%p memNode %d\n", last,
(char*)p1 - 1, lastNode);
} while(p1 <= p2);
# else
__kmp_printf_no_lock(" %p-%p memNode %d\n", p1,
- (char*)p1 + (PAGE_SIZE - 1), __kmp_get_host_node(p1));
+ (char*)p1 + (page_size - 1), __kmp_get_host_node(p1));
if(p1 < p2) {
__kmp_printf_no_lock(" %p-%p memNode %d\n", p2,
- (char*)p2 + (PAGE_SIZE - 1), __kmp_get_host_node(p2));
+ (char*)p2 + (page_size - 1), __kmp_get_host_node(p2));
}
# endif
}
Index: runtime/src/kmp_os.h
===================================================================
--- runtime/src/kmp_os.h
+++ runtime/src/kmp_os.h
@@ -236,9 +236,18 @@
#endif
#define PAGE_SIZE (0x4000)
+
+#if KMP_OS_LINUX
+#define KMP_GET_PAGE_SIZE() getpagesize()
+#else
+// TODO: find the corresponding function to getpagesize() in Windows
+// and use it whenever possible.
+#define KMP_GET_PAGE_SIZE() PAGE_SIZE
+#endif
+
#define PAGE_ALIGNED(_addr) ( ! ((size_t) _addr & \
- (size_t)(PAGE_SIZE - 1)))
-#define ALIGN_TO_PAGE(x) (void *)(((size_t)(x)) & ~((size_t)(PAGE_SIZE - 1)))
+ (size_t)(KMP_GET_PAGE_SIZE() - 1)))
+#define ALIGN_TO_PAGE(x) (void *)(((size_t)(x)) & ~((size_t)(KMP_GET_PAGE_SIZE() - 1)))
/* ---------------------- Support for cache alignment, padding, etc. -----------------*/
Index: runtime/src/kmp_alloc.c
===================================================================
--- runtime/src/kmp_alloc.c
+++ runtime/src/kmp_alloc.c
@@ -1719,13 +1719,8 @@
__kmp_ft_page_allocate(size_t size)
{
void *adr, *aadr;
-#if KMP_OS_LINUX
- /* TODO: Use this function to get page size everywhere */
- int page_size = getpagesize();
-#else
- /* TODO: Find windows function to get page size and use it everywhere */
- int page_size = PAGE_SIZE;
-#endif /* KMP_OS_LINUX */
+
+ const int page_size = KMP_GET_PAGE_SIZE();
adr = (void *) __kmp_thread_malloc( __kmp_get_thread(),
size + page_size + KMP_PTR_SKIP);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D26001.75926.patch
Type: text/x-patch
Size: 3630 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20161026/7db5a6e7/attachment.bin>
More information about the Openmp-commits
mailing list