198 int JfrOSInterface::cpu_load(int which_logical_cpu, double* cpu_load) {
199 return instance()._impl->cpu_load(which_logical_cpu, cpu_load);
200 }
201
202 int JfrOSInterface::context_switch_rate(double* rate) {
203 return instance()._impl->context_switch_rate(rate);
204 }
205
206 int JfrOSInterface::cpu_load_total_process(double* cpu_load) {
207 return instance()._impl->cpu_load_total_process(cpu_load);
208 }
209
210 int JfrOSInterface::cpu_loads_process(double* jvm_user_load, double* jvm_kernel_load, double* system_total_load){
211 return instance()._impl->cpu_loads_process(jvm_user_load, jvm_kernel_load, system_total_load);
212 }
213
214 int JfrOSInterface::os_version(char** os_version) {
215 return instance()._impl->os_version(os_version);
216 }
217
218 int JfrOSInterface::generate_initial_environment_variable_events() {
219 if (environ == NULL) {
220 return OS_ERR;
221 }
222
223 if (EventInitialEnvironmentVariable::is_enabled()) {
224 // One time stamp for all events, so they can be grouped together
225 JfrTicks time_stamp = JfrTicks::now();
226 for (char** p = environ; *p != NULL; p++) {
227 char* variable = *p;
228 char* equal_sign = strchr(variable, '=');
229 if (equal_sign != NULL) {
230 // Extract key/value
231 ResourceMark rm;
232 ptrdiff_t key_length = equal_sign - variable;
233 char* key = NEW_RESOURCE_ARRAY(char, key_length + 1);
234 char* value = equal_sign + 1;
235 strncpy(key, variable, key_length);
236 key[key_length] = '\0';
237 EventInitialEnvironmentVariable event(UNTIMED);
|
198 int JfrOSInterface::cpu_load(int which_logical_cpu, double* cpu_load) {
199 return instance()._impl->cpu_load(which_logical_cpu, cpu_load);
200 }
201
202 int JfrOSInterface::context_switch_rate(double* rate) {
203 return instance()._impl->context_switch_rate(rate);
204 }
205
206 int JfrOSInterface::cpu_load_total_process(double* cpu_load) {
207 return instance()._impl->cpu_load_total_process(cpu_load);
208 }
209
210 int JfrOSInterface::cpu_loads_process(double* jvm_user_load, double* jvm_kernel_load, double* system_total_load){
211 return instance()._impl->cpu_loads_process(jvm_user_load, jvm_kernel_load, system_total_load);
212 }
213
214 int JfrOSInterface::os_version(char** os_version) {
215 return instance()._impl->os_version(os_version);
216 }
217
218 const char* JfrOSInterface::virtualization_name() {
219 VirtualizationType vrt = VM_Version::get_detected_virtualization();
220 if (vrt == XenHVM) {
221 return "Xen hardware-assisted virtualization";
222 } else if (vrt == KVM) {
223 return "KVM virtualization";
224 } else if (vrt == VMWare) {
225 return "VMWare virtualization";
226 } else if (vrt == HyperV) {
227 return "HyperV virtualization";
228 } else if (vrt == PowerVM) {
229 return "PowerVM virtualization";
230 } else if (vrt == PowerKVM) {
231 return "Power KVM virtualization";
232 } else if (vrt == PowerFullPartitionMode) {
233 return "Power full partition";
234 }
235
236 return "No virtualization detected";
237 }
238
239 int JfrOSInterface::generate_initial_environment_variable_events() {
240 if (environ == NULL) {
241 return OS_ERR;
242 }
243
244 if (EventInitialEnvironmentVariable::is_enabled()) {
245 // One time stamp for all events, so they can be grouped together
246 JfrTicks time_stamp = JfrTicks::now();
247 for (char** p = environ; *p != NULL; p++) {
248 char* variable = *p;
249 char* equal_sign = strchr(variable, '=');
250 if (equal_sign != NULL) {
251 // Extract key/value
252 ResourceMark rm;
253 ptrdiff_t key_length = equal_sign - variable;
254 char* key = NEW_RESOURCE_ARRAY(char, key_length + 1);
255 char* value = equal_sign + 1;
256 strncpy(key, variable, key_length);
257 key[key_length] = '\0';
258 EventInitialEnvironmentVariable event(UNTIMED);
|