33#include < assert.h>
44#include < iostream>
55#include < cmath>
6+ #include < linux/mman.h>
67#include < sys/mman.h>
78#include < asm-generic/mman-common.h>
89
@@ -19,18 +20,35 @@ struct train {
1920 int _ActiveinputIds;
2021
2122 void * operator new (size_t size){
22- return mmap (NULL , size,
23+ void * ptr = mmap (NULL , size,
2324 PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB,
24- -1 , 0 );};
25+ -1 , 0 );
26+ if (ptr == MAP_FAILED){
27+ ptr = mmap (NULL , size,
28+ PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
29+ -1 , 0 );
30+ }
31+ if (ptr == MAP_FAILED){
32+ std::cout << " mmap failed at train." << std::endl;
33+ }
34+ return ptr;
35+ }
2536 void * operator new (std::size_t size, const std::nothrow_t & nothrow_value){return operator new (size);};
2637 void * operator new (std::size_t size, void * ptr){return operator new (size);};
2738 void * operator new [] (std::size_t size){
2839 void * ptr = mmap (NULL , size,
29- PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | ( 30 << MAP_HUGE_SHIFT) ,
40+ PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | MAP_HUGE_1GB ,
3041 -1 , 0 );
31- if (ptr == NULL )
42+ if (ptr == MAP_FAILED){
43+ ptr = mmap (NULL , size,
44+ PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
45+ -1 , 0 );
46+ }
47+ if (ptr == MAP_FAILED){
3248 std::cout << " mmap fail! No train array!" << std::endl;
33- return ptr;};
49+ }
50+ return ptr;
51+ }
3452 void * operator new [] (std::size_t size, const std::nothrow_t & nothrow_value){return operator new (size);};
3553 void * operator new [] (std::size_t size, void * ptr){return operator new (size);};
3654
@@ -86,16 +104,36 @@ class Node
86104
87105 void * operator new (size_t size){
88106 std::cout << " new Node" << std::endl;
89- return mmap (NULL , size,
90- PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | (30 << MAP_HUGE_SHIFT),
91- -1 , 0 );};
107+ void * ptr = mmap (NULL , size,
108+ PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | MAP_HUGE_1GB,
109+ -1 , 0 );
110+ if (ptr == MAP_FAILED){
111+ ptr = mmap (NULL , size,
112+ PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
113+ -1 , 0 );
114+ }
115+ if (ptr == MAP_FAILED){
116+ std::cout << " mmap failed at Node." << std::endl;
117+ }
118+ return ptr;
119+ }
92120 void * operator new (std::size_t size, const std::nothrow_t & nothrow_value){return operator new (size);};
93121 void * operator new (std::size_t size, void * ptr){return operator new (size);};
94122 void * operator new [] (std::size_t size){
95123 std::cout << " new Node array" << std::endl;
96- return mmap (NULL , size,
97- PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | (30 << MAP_HUGE_SHIFT),
98- -1 , 0 );};
124+ void * ptr = mmap (NULL , size,
125+ PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | MAP_HUGE_1GB,
126+ -1 , 0 );
127+ if (ptr == MAP_FAILED){
128+ ptr = mmap (NULL , size,
129+ PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
130+ -1 , 0 );
131+ }
132+ if (ptr == MAP_FAILED){
133+ std::cout << " mmap failed at Node array." << std::endl;
134+ }
135+ return ptr;
136+ }
99137 void * operator new [] (std::size_t size, const std::nothrow_t & nothrow_value){return operator new (size);};
100138 void * operator new [] (std::size_t size, void * ptr){return operator new (size);};
101139
0 commit comments