@@ -19,18 +19,35 @@ struct train {
1919 int _ActiveinputIds;
2020
2121 void * operator new (size_t size){
22- return mmap (NULL , size,
22+ void * ptr = mmap (NULL , size,
2323 PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB,
24- -1 , 0 );};
24+ -1 , 0 );
25+ if (ptr == MAP_FAILED){
26+ ptr = mmap (NULL , size,
27+ PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
28+ -1 , 0 );
29+ }
30+ if (ptr == MAP_FAILED){
31+ std::cout << " mmap failed at train." << std::endl;
32+ }
33+ return ptr;
34+ }
2535 void * operator new (std::size_t size, const std::nothrow_t & nothrow_value){return operator new (size);};
2636 void * operator new (std::size_t size, void * ptr){return operator new (size);};
2737 void * operator new [] (std::size_t size){
2838 void * ptr = mmap (NULL , size,
2939 PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | MAP_HUGE_1GB,
3040 -1 , 0 );
31- if (ptr == NULL )
41+ if (ptr == MAP_FAILED){
42+ ptr = mmap (NULL , size,
43+ PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
44+ -1 , 0 );
45+ }
46+ if (ptr == MAP_FAILED){
3247 std::cout << " mmap fail! No train array!" << std::endl;
33- return ptr;};
48+ }
49+ return ptr;
50+ }
3451 void * operator new [] (std::size_t size, const std::nothrow_t & nothrow_value){return operator new (size);};
3552 void * operator new [] (std::size_t size, void * ptr){return operator new (size);};
3653
@@ -86,16 +103,36 @@ class Node
86103
87104 void * operator new (size_t size){
88105 std::cout << " new Node" << std::endl;
89- return mmap (NULL , size,
106+ void * ptr = mmap (NULL , size,
90107 PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | MAP_HUGE_1GB,
91- -1 , 0 );};
108+ -1 , 0 );
109+ if (ptr == MAP_FAILED){
110+ ptr = mmap (NULL , size,
111+ PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
112+ -1 , 0 );
113+ }
114+ if (ptr == MAP_FAILED){
115+ std::cout << " mmap failed at Node." << std::endl;
116+ }
117+ return ptr;
118+ }
92119 void * operator new (std::size_t size, const std::nothrow_t & nothrow_value){return operator new (size);};
93120 void * operator new (std::size_t size, void * ptr){return operator new (size);};
94121 void * operator new [] (std::size_t size){
95122 std::cout << " new Node array" << std::endl;
96- return mmap (NULL , size,
123+ void * ptr = mmap (NULL , size,
97124 PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | MAP_HUGE_1GB,
98- -1 , 0 );};
125+ -1 , 0 );
126+ if (ptr == MAP_FAILED){
127+ ptr = mmap (NULL , size,
128+ PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
129+ -1 , 0 );
130+ }
131+ if (ptr == MAP_FAILED){
132+ std::cout << " mmap failed at Node array." << std::endl;
133+ }
134+ return ptr;
135+ }
99136 void * operator new [] (std::size_t size, const std::nothrow_t & nothrow_value){return operator new (size);};
100137 void * operator new [] (std::size_t size, void * ptr){return operator new (size);};
101138
0 commit comments