248 249 TRACE_REQUEST_FUNC(ThreadContextSwitchRate) { 250 double rate = 0.0; 251 int ret_val = JfrOSInterface::context_switch_rate(&rate); 252 if (ret_val == OS_ERR) { 253 log_debug(jfr, system)( "Unable to generate requestable event ThreadContextSwitchRate"); 254 return; 255 } 256 if (ret_val == FUNCTIONALITY_NOT_IMPLEMENTED) { 257 return; 258 } 259 if (ret_val == OS_OK) { 260 EventThreadContextSwitchRate event; 261 event.set_switchRate((float)rate + 0.0f); 262 event.commit(); 263 } 264 } 265 266 #define SEND_FLAGS_OF_TYPE(eventType, flagType) \ 267 do { \ 268 JVMFlag *flag = JVMFlag::flags; \ 269 while (flag->_name != NULL) { \ 270 if (flag->is_ ## flagType()) { \ 271 if (flag->is_unlocked()) { \ 272 Event ## eventType event; \ 273 event.set_name(flag->_name); \ 274 event.set_value(flag->get_ ## flagType()); \ 275 event.set_origin(flag->get_origin()); \ 276 event.commit(); \ 277 } \ 278 } \ 279 ++flag; \ 280 } \ 281 } while (0) 282 283 TRACE_REQUEST_FUNC(IntFlag) { 284 SEND_FLAGS_OF_TYPE(IntFlag, int); 285 } 286 287 TRACE_REQUEST_FUNC(UnsignedIntFlag) { 288 SEND_FLAGS_OF_TYPE(UnsignedIntFlag, uint); 289 } 290 291 TRACE_REQUEST_FUNC(LongFlag) { 292 SEND_FLAGS_OF_TYPE(LongFlag, intx); 293 } 294 295 TRACE_REQUEST_FUNC(UnsignedLongFlag) { 296 SEND_FLAGS_OF_TYPE(UnsignedLongFlag, uintx); 297 SEND_FLAGS_OF_TYPE(UnsignedLongFlag, uint64_t); 298 SEND_FLAGS_OF_TYPE(UnsignedLongFlag, size_t); 299 } | 248 249 TRACE_REQUEST_FUNC(ThreadContextSwitchRate) { 250 double rate = 0.0; 251 int ret_val = JfrOSInterface::context_switch_rate(&rate); 252 if (ret_val == OS_ERR) { 253 log_debug(jfr, system)( "Unable to generate requestable event ThreadContextSwitchRate"); 254 return; 255 } 256 if (ret_val == FUNCTIONALITY_NOT_IMPLEMENTED) { 257 return; 258 } 259 if (ret_val == OS_OK) { 260 EventThreadContextSwitchRate event; 261 event.set_switchRate((float)rate + 0.0f); 262 event.commit(); 263 } 264 } 265 266 #define SEND_FLAGS_OF_TYPE(eventType, flagType) \ 267 do { \ 268 JVMFlag *flag; \ 269 JVMFLAG_FOR_EACH(flag) { \ 270 if (flag->is_ ## flagType()) { \ 271 if (flag->is_unlocked()) { \ 272 Event ## eventType event; \ 273 event.set_name(flag->name()); \ 274 event.set_value(flag->get_ ## flagType()); \ 275 event.set_origin(flag->get_origin()); \ 276 event.commit(); \ 277 } \ 278 } \ 279 } \ 280 } while (0) 281 282 TRACE_REQUEST_FUNC(IntFlag) { 283 SEND_FLAGS_OF_TYPE(IntFlag, int); 284 } 285 286 TRACE_REQUEST_FUNC(UnsignedIntFlag) { 287 SEND_FLAGS_OF_TYPE(UnsignedIntFlag, uint); 288 } 289 290 TRACE_REQUEST_FUNC(LongFlag) { 291 SEND_FLAGS_OF_TYPE(LongFlag, intx); 292 } 293 294 TRACE_REQUEST_FUNC(UnsignedLongFlag) { 295 SEND_FLAGS_OF_TYPE(UnsignedLongFlag, uintx); 296 SEND_FLAGS_OF_TYPE(UnsignedLongFlag, uint64_t); 297 SEND_FLAGS_OF_TYPE(UnsignedLongFlag, size_t); 298 } |