blob: 16d78ad0adf09da98af7f4d6a4e50c24402187f6 [file] [log] [blame]
/* SPDX-License-Identifier: LGPL-2.1 */
/*
* Copyright (C) 2020 VMware Inc, Yordan Karadzhov (VMware) <y.karadz@gmail.com>
*/
/**
* @file latency_plot.h
* @brief Plugin for visualizing the latency between two trace events.
*/
#ifndef _KS_PLUGIN_LATENCY_PLOT_H
#define _KS_PLUGIN_LATENCY_PLOT_H
// KernelShark
#include "libkshark.h"
#include "libkshark-plugin.h"
#ifdef __cplusplus
extern "C" {
#endif
/** Structure representing a plugin-specific context. */
struct plugin_latency_context {
/** Trace event names. */
char *event_name[2];
/** Trace event identifiers. */
int event_id[2];
/** Event field names. */
char *field_name[2];
/** True if the second pass is already done. */
bool second_pass_done;
/**
* The maximum value of the latency between events A and B in this
* data sample.
*/
int64_t max_latency;
/** Container objects to store the trace event field's data. */
struct kshark_data_container *data[2];
};
KS_DECLARE_PLUGIN_CONTEXT_METHODS(struct plugin_latency_context)
void draw_latency(struct kshark_cpp_argv *argv_c,
int sd, int pid, int draw_action);
void *plugin_latency_add_menu(void *gui_ptr);
void plugin_set_event_fields(struct plugin_latency_context *plugin_ctx);
void plugin_mark_entry(const struct kshark_entry *e, char mark);
#ifdef __cplusplus
}
#endif
#endif