22 * |
22 * |
23 */ |
23 */ |
24 |
24 |
25 #include "precompiled.hpp" |
25 #include "precompiled.hpp" |
26 #include "jfr/jfrEvents.hpp" |
26 #include "jfr/jfrEvents.hpp" |
|
27 #include "jfr/periodic/jfrNetworkUtilization.hpp" |
27 #include "jfr/periodic/jfrOSInterface.hpp" |
28 #include "jfr/periodic/jfrOSInterface.hpp" |
28 #include "memory/allocation.inline.hpp" |
29 #include "memory/allocation.inline.hpp" |
29 #include "memory/resourceArea.hpp" |
30 #include "memory/resourceArea.hpp" |
30 #include "runtime/os.hpp" |
31 #include "runtime/os.hpp" |
31 #include "runtime/os_perf.hpp" |
32 #include "runtime/os_perf.hpp" |
64 friend class JfrOSInterface; |
66 friend class JfrOSInterface; |
65 private: |
67 private: |
66 CPUInformationInterface* _cpu_info_interface; |
68 CPUInformationInterface* _cpu_info_interface; |
67 CPUPerformanceInterface* _cpu_perf_interface; |
69 CPUPerformanceInterface* _cpu_perf_interface; |
68 SystemProcessInterface* _system_process_interface; |
70 SystemProcessInterface* _system_process_interface; |
|
71 NetworkPerformanceInterface* _network_performance_interface; |
69 |
72 |
70 // stub helper |
73 // stub helper |
71 void functionality_not_implemented(char** str) const; |
74 void functionality_not_implemented(char** str) const; |
72 |
75 |
73 JfrOSInterfaceImpl(); |
76 JfrOSInterfaceImpl(); |
87 // environment information |
90 // environment information |
88 void generate_environment_variables_events(); |
91 void generate_environment_variables_events(); |
89 |
92 |
90 // system processes information |
93 // system processes information |
91 int system_processes(SystemProcess** system_processes, int* no_of_sys_processes); |
94 int system_processes(SystemProcess** system_processes, int* no_of_sys_processes); |
|
95 |
|
96 int network_utilization(NetworkInterface** network_interfaces) const; |
92 }; |
97 }; |
93 |
98 |
94 JfrOSInterface::JfrOSInterfaceImpl::JfrOSInterfaceImpl() : _cpu_info_interface(NULL), |
99 JfrOSInterface::JfrOSInterfaceImpl::JfrOSInterfaceImpl() : _cpu_info_interface(NULL), |
95 _cpu_perf_interface(NULL), |
100 _cpu_perf_interface(NULL), |
96 _system_process_interface(NULL) {} |
101 _system_process_interface(NULL) {} |
97 |
102 |
98 bool JfrOSInterface::JfrOSInterfaceImpl::initialize() { |
103 bool JfrOSInterface::JfrOSInterfaceImpl::initialize() { |
99 _cpu_info_interface = new CPUInformationInterface(); |
104 _cpu_info_interface = new CPUInformationInterface(); |
100 bool success = _cpu_info_interface != NULL && _cpu_info_interface->initialize(); |
105 if (!(_cpu_info_interface != NULL && _cpu_info_interface->initialize())) { |
101 if (!success) { |
|
102 return false; |
106 return false; |
103 } |
107 } |
104 _cpu_perf_interface = new CPUPerformanceInterface(); |
108 _cpu_perf_interface = new CPUPerformanceInterface(); |
105 success = _cpu_perf_interface != NULL && _cpu_perf_interface->initialize(); |
109 if (!(_cpu_perf_interface != NULL && _cpu_perf_interface->initialize())) { |
106 if (!success) { |
|
107 return false; |
110 return false; |
108 } |
111 } |
109 _system_process_interface = new SystemProcessInterface(); |
112 _system_process_interface = new SystemProcessInterface(); |
110 success = _system_process_interface != NULL && _system_process_interface->initialize(); |
113 if (!(_system_process_interface != NULL && _system_process_interface->initialize())) { |
111 return success; |
114 return false; |
|
115 } |
|
116 _network_performance_interface = new NetworkPerformanceInterface(); |
|
117 return _network_performance_interface != NULL && _network_performance_interface->initialize(); |
112 } |
118 } |
113 |
119 |
114 JfrOSInterface::JfrOSInterfaceImpl::~JfrOSInterfaceImpl(void) { |
120 JfrOSInterface::JfrOSInterfaceImpl::~JfrOSInterfaceImpl(void) { |
115 if (_cpu_info_interface != NULL) { |
121 if (_cpu_info_interface != NULL) { |
116 delete _cpu_info_interface; |
122 delete _cpu_info_interface; |
122 } |
128 } |
123 if (_system_process_interface != NULL) { |
129 if (_system_process_interface != NULL) { |
124 delete _system_process_interface; |
130 delete _system_process_interface; |
125 _system_process_interface = NULL; |
131 _system_process_interface = NULL; |
126 } |
132 } |
|
133 if (_network_performance_interface != NULL) { |
|
134 delete _network_performance_interface; |
|
135 _network_performance_interface = NULL; |
|
136 } |
127 } |
137 } |
128 |
138 |
129 int JfrOSInterface::JfrOSInterfaceImpl::cpu_load(int which_logical_cpu, double* cpu_load) { |
139 int JfrOSInterface::JfrOSInterfaceImpl::cpu_load(int which_logical_cpu, double* cpu_load) { |
130 return _cpu_perf_interface->cpu_load(which_logical_cpu, cpu_load); |
140 return _cpu_perf_interface->cpu_load(which_logical_cpu, cpu_load); |
131 } |
141 } |
150 |
160 |
151 int JfrOSInterface::JfrOSInterfaceImpl::system_processes(SystemProcess** system_processes, int* no_of_sys_processes) { |
161 int JfrOSInterface::JfrOSInterfaceImpl::system_processes(SystemProcess** system_processes, int* no_of_sys_processes) { |
152 assert(system_processes != NULL, "system_processes pointer is NULL!"); |
162 assert(system_processes != NULL, "system_processes pointer is NULL!"); |
153 assert(no_of_sys_processes != NULL, "no_of_sys_processes pointer is NULL!"); |
163 assert(no_of_sys_processes != NULL, "no_of_sys_processes pointer is NULL!"); |
154 return _system_process_interface->system_processes(system_processes, no_of_sys_processes); |
164 return _system_process_interface->system_processes(system_processes, no_of_sys_processes); |
|
165 } |
|
166 |
|
167 int JfrOSInterface::JfrOSInterfaceImpl::network_utilization(NetworkInterface** network_interfaces) const { |
|
168 return _network_performance_interface->network_utilization(network_interfaces); |
155 } |
169 } |
156 |
170 |
157 // assigned char* is RESOURCE_HEAP_ALLOCATED |
171 // assigned char* is RESOURCE_HEAP_ALLOCATED |
158 // caller need to ensure proper ResourceMark placement. |
172 // caller need to ensure proper ResourceMark placement. |
159 int JfrOSInterface::JfrOSInterfaceImpl::os_version(char** os_version) const { |
173 int JfrOSInterface::JfrOSInterfaceImpl::os_version(char** os_version) const { |