147 static bool pd_unmap_memory(char *addr, size_t bytes); 148 static void pd_free_memory(char *addr, size_t bytes, size_t alignment_hint); 149 static void pd_realign_memory(char *addr, size_t bytes, size_t alignment_hint); 150 151 static size_t page_size_for_region(size_t region_size, size_t min_pages, bool must_be_aligned); 152 153 public: 154 static void init(void); // Called before command line parsing 155 static void init_before_ergo(void); // Called after command line parsing 156 // before VM ergonomics processing. 157 static jint init_2(void); // Called after command line parsing 158 // and VM ergonomics processing 159 static void init_globals(void) { // Called from init_globals() in init.cpp 160 init_globals_ext(); 161 } 162 163 // File names are case-insensitive on windows only 164 // Override me as needed 165 static int file_name_strcmp(const char* s1, const char* s2); 166 167 // unset environment variable 168 static bool unsetenv(const char* name); 169 170 static bool have_special_privileges(); 171 172 static jlong javaTimeMillis(); 173 static jlong javaTimeNanos(); 174 static void javaTimeNanos_info(jvmtiTimerInfo *info_ptr); 175 static void javaTimeSystemUTC(jlong &seconds, jlong &nanos); 176 static void run_periodic_checks(); 177 static bool supports_monotonic_clock(); 178 179 // Returns the elapsed time in seconds since the vm started. 180 static double elapsedTime(); 181 182 // Returns real time in seconds since an arbitrary point 183 // in the past. 184 static bool getTimesSecs(double* process_real_time, 185 double* process_user_time, 186 double* process_system_time); | 147 static bool pd_unmap_memory(char *addr, size_t bytes); 148 static void pd_free_memory(char *addr, size_t bytes, size_t alignment_hint); 149 static void pd_realign_memory(char *addr, size_t bytes, size_t alignment_hint); 150 151 static size_t page_size_for_region(size_t region_size, size_t min_pages, bool must_be_aligned); 152 153 public: 154 static void init(void); // Called before command line parsing 155 static void init_before_ergo(void); // Called after command line parsing 156 // before VM ergonomics processing. 157 static jint init_2(void); // Called after command line parsing 158 // and VM ergonomics processing 159 static void init_globals(void) { // Called from init_globals() in init.cpp 160 init_globals_ext(); 161 } 162 163 // File names are case-insensitive on windows only 164 // Override me as needed 165 static int file_name_strcmp(const char* s1, const char* s2); 166 167 // A strlcat like API for safe string concatenation of 2 NULL limited C strings 168 // strlcat is not guranteed to exist on all platforms, so we implement our own 169 static void strlcat(char *dst, const char *src, size_t size) { 170 register char *_dst = dst; 171 register char *_src = (char *)src; 172 register int _size = (int)size; 173 174 while ((_size-- != 0) && (*_dst != '\0')) { 175 _dst++; 176 } 177 while ((_size-- != 0) && (*_src != '\0')) { 178 *_dst = *_src; 179 _dst++; _src++; 180 } 181 *_dst = '\0'; 182 } 183 184 // unset environment variable 185 static bool unsetenv(const char* name); 186 187 static bool have_special_privileges(); 188 189 static jlong javaTimeMillis(); 190 static jlong javaTimeNanos(); 191 static void javaTimeNanos_info(jvmtiTimerInfo *info_ptr); 192 static void javaTimeSystemUTC(jlong &seconds, jlong &nanos); 193 static void run_periodic_checks(); 194 static bool supports_monotonic_clock(); 195 196 // Returns the elapsed time in seconds since the vm started. 197 static double elapsedTime(); 198 199 // Returns real time in seconds since an arbitrary point 200 // in the past. 201 static bool getTimesSecs(double* process_real_time, 202 double* process_user_time, 203 double* process_system_time); |