@@ -111,20 +111,22 @@ static os::PageSizes scan_hugepages() {
111
111
112
112
os::PageSizes pagesizes;
113
113
114
- DIR *dir = opendir (sys_hugepages);
115
-
116
- struct dirent *entry;
117
- size_t pagesize;
118
- while ((entry = readdir (dir)) != nullptr ) {
119
- if (entry->d_type == DT_DIR &&
120
- sscanf (entry->d_name , " hugepages-%zukB" , &pagesize) == 1 ) {
121
- // The kernel is using kB, hotspot uses bytes
122
- // Add each found Large Page Size to page_sizes
123
- pagesize *= K;
124
- pagesizes.add (pagesize);
114
+ DIR* dir = opendir (sys_hugepages);
115
+
116
+ if (dir != nullptr ) {
117
+ struct dirent *entry;
118
+ size_t pagesize;
119
+ while ((entry = readdir (dir)) != nullptr ) {
120
+ if (entry->d_type == DT_DIR &&
121
+ sscanf (entry->d_name , " hugepages-%zukB" , &pagesize) == 1 ) {
122
+ // The kernel is using kB, hotspot uses bytes
123
+ // Add each found Large Page Size to page_sizes
124
+ pagesize *= K;
125
+ pagesizes.add (pagesize);
126
+ }
125
127
}
128
+ closedir (dir);
126
129
}
127
- closedir (dir);
128
130
129
131
return pagesizes;
130
132
}
@@ -142,11 +144,13 @@ void StaticHugePageSupport::print_on(outputStream* os) {
142
144
}
143
145
144
146
void StaticHugePageSupport::scan_os () {
145
- _pagesizes = scan_hugepages ();
146
147
_default_hugepage_size = scan_default_hugepagesize ();
147
- assert (_pagesizes.contains (_default_hugepage_size),
148
- " Unexpected configuration: default pagesize (" SIZE_FORMAT " ) "
149
- " has no associated directory in /sys/kernel/mm/hugepages.." , _default_hugepage_size);
148
+ if (_default_hugepage_size > 0 ) {
149
+ _pagesizes = scan_hugepages ();
150
+ assert (_pagesizes.contains (_default_hugepage_size),
151
+ " Unexpected configuration: default pagesize (" SIZE_FORMAT " ) "
152
+ " has no associated directory in /sys/kernel/mm/hugepages.." , _default_hugepage_size);
153
+ }
150
154
_initialized = true ;
151
155
LogTarget (Info, pagesize) lt;
152
156
if (lt.is_enabled ()) {
0 commit comments