Path: blob/master/runtime/gc_verbose_handler_realtime/VerboseHandlerRealtime.cpp
5985 views
/*******************************************************************************1* Copyright (c) 1991, 2014 IBM Corp. and others2*3* This program and the accompanying materials are made available under4* the terms of the Eclipse Public License 2.0 which accompanies this5* distribution and is available at https://www.eclipse.org/legal/epl-2.0/6* or the Apache License, Version 2.0 which accompanies this distribution and7* is available at https://www.apache.org/licenses/LICENSE-2.0.8*9* This Source Code may also be made available under the following10* Secondary Licenses when the conditions for such availability set11* forth in the Eclipse Public License, v. 2.0 are satisfied: GNU12* General Public License, version 2 with the GNU Classpath13* Exception [1] and GNU General Public License, version 2 with the14* OpenJDK Assembly Exception [2].15*16* [1] https://www.gnu.org/software/classpath/license.html17* [2] http://openjdk.java.net/legal/assembly-exception.html18*19* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception20*******************************************************************************/2122/* Temporary file to make compilers happy */2324#include "j9.h"25#include "j9cfg.h"26#include "mmhook.h"2728#include "EnvironmentBase.hpp"29#include "VerboseManager.hpp"30#include "VerboseHandlerOutputRealtime.hpp"31#include "VerboseWriterChain.hpp"3233void verboseHandlerCycleStart(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)34{35MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;36handler->handleCycleStart(hook, eventNum, eventData);37}3839void verboseHandlerCycleEnd(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)40{41MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;42handler->handleCycleEnd(hook, eventNum, eventData);43}4445void verboseHandlerTriggerStart(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)46{47MM_MetronomeTriggerStartEvent* event = (MM_MetronomeTriggerStartEvent*)eventData;48MM_VerboseHandlerOutput* handler = (MM_VerboseHandlerOutput*)userData;49MM_VerboseManager* manager = handler->getManager();50MM_VerboseWriterChain* writer = manager->getWriterChain();51MM_EnvironmentBase* env = MM_EnvironmentBase::getEnvironment(event->currentThread);52PORT_ACCESS_FROM_ENVIRONMENT(env);53char tagTemplate[200];54handler->getTagTemplate(tagTemplate, sizeof(tagTemplate), manager->getIdAndIncrement(), j9time_current_time_millis());55writer->formatAndOutput(env, 0, "<trigger-start %s />", tagTemplate);56writer->flush(env);57}5859void verboseHandlerTriggerEnd(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)60{61MM_MetronomeTriggerEndEvent* event = (MM_MetronomeTriggerEndEvent*)eventData;62MM_VerboseHandlerOutput* handler = (MM_VerboseHandlerOutput*)userData;63MM_VerboseManager* manager = handler->getManager();64MM_VerboseWriterChain* writer = manager->getWriterChain();65MM_EnvironmentBase* env = MM_EnvironmentBase::getEnvironment(event->currentThread);66PORT_ACCESS_FROM_ENVIRONMENT(env);67char tagTemplate[200];68handler->getTagTemplate(tagTemplate, sizeof(tagTemplate), manager->getIdAndIncrement(), j9time_current_time_millis());69writer->formatAndOutput(env, 0, "<trigger-end %s />\n", tagTemplate);70writer->flush(env);71}7273void verboseHandlerIncrementStart(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)74{75MM_MetronomeIncrementStartEvent* event = (MM_MetronomeIncrementStartEvent*) eventData;76MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;77handler->handleEvent(event);78}7980void verboseHandlerIncrementEnd(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)81{82MM_MetronomeIncrementEndEvent* event = (MM_MetronomeIncrementEndEvent*) eventData;83MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;84handler->handleEvent(event);85}8687void verboseHandlerSyncGCStart(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)88{89MM_MetronomeSynchronousGCStartEvent* event = (MM_MetronomeSynchronousGCStartEvent*) eventData;90MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;91handler->handleEvent(event);92}9394void verboseHandlerSyncGCEnd(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)95{96MM_MetronomeSynchronousGCEndEvent* event = (MM_MetronomeSynchronousGCEndEvent*) eventData;97MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;98handler->handleEvent(event);99}100101void verboseHandlerMarkStart(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)102{103MM_MarkStartEvent* event = (MM_MarkStartEvent*) eventData;104MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;105handler->handleEvent(event);106}107108void verboseHandlerMarkEnd(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)109{110MM_MarkEndEvent* event = (MM_MarkEndEvent*) eventData;111MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;112handler->handleEvent(event);113}114115void verboseHandlerSweepStart(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)116{117MM_SweepStartEvent* event = (MM_SweepStartEvent*) eventData;118MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;119handler->handleEvent(event);120}121122void verboseHandlerSweepEnd(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)123{124MM_SweepEndEvent* event = (MM_SweepEndEvent*) eventData;125MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;126handler->handleEvent(event);127}128129void verboseHandlerClassUnloadingStart(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)130{131MM_ClassUnloadingStartEvent* event = (MM_ClassUnloadingStartEvent*) eventData;132MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;133handler->handleEvent(event);134}135136void verboseHandlerClassUnloadingEnd(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)137{138MM_ClassUnloadingEndEvent* event = (MM_ClassUnloadingEndEvent*) eventData;139MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;140handler->handleEvent(event);141}142143void verboseHandlerOutOFMemory(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)144{145MM_OutOfMemoryEvent* event = (MM_OutOfMemoryEvent*) eventData;146MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;147handler->handleEvent(event);148}149150void verboseHandlerUtilTrackerOverflow(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)151{152MM_UtilizationTrackerOverflowEvent* event = (MM_UtilizationTrackerOverflowEvent*) eventData;153MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;154handler->handleEvent(event);155}156157void verboseHandlerNonMonotonicTime(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)158{159MM_NonMonotonicTimeEvent* event = (MM_NonMonotonicTimeEvent*) eventData;160MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;161handler->handleEvent(event);162}163164165