|
Packit |
76ec6a |
/* -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
Packit |
76ec6a |
#ifndef _GSM_LOAD_GRAPH_H_
|
|
Packit |
76ec6a |
#define _GSM_LOAD_GRAPH_H_
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
#include <glib.h>
|
|
Packit |
76ec6a |
#include <glibtop/cpu.h>
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
#include "legacy/gsm_color_button.h"
|
|
Packit |
76ec6a |
#include "util.h"
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
enum
|
|
Packit |
76ec6a |
{
|
|
Packit |
76ec6a |
LOAD_GRAPH_CPU,
|
|
Packit |
76ec6a |
LOAD_GRAPH_MEM,
|
|
Packit |
76ec6a |
LOAD_GRAPH_NET
|
|
Packit |
76ec6a |
};
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
enum
|
|
Packit |
76ec6a |
{
|
|
Packit |
76ec6a |
CPU_TOTAL,
|
|
Packit |
76ec6a |
CPU_USED,
|
|
Packit |
76ec6a |
N_CPU_STATES
|
|
Packit |
76ec6a |
};
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
struct LoadGraphLabels
|
|
Packit |
76ec6a |
{
|
|
Packit |
76ec6a |
GtkLabel *cpu[GLIBTOP_NCPU];
|
|
Packit |
76ec6a |
GtkLabel *memory;
|
|
Packit |
76ec6a |
GtkLabel *swap;
|
|
Packit |
76ec6a |
GtkLabel *net_in;
|
|
Packit |
76ec6a |
GtkLabel *net_in_total;
|
|
Packit |
76ec6a |
GtkLabel *net_out;
|
|
Packit |
76ec6a |
GtkLabel *net_out_total;
|
|
Packit |
76ec6a |
};
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
struct LoadGraph
|
|
Packit |
76ec6a |
: private procman::NonCopyable
|
|
Packit |
76ec6a |
{
|
|
Packit |
76ec6a |
static const unsigned NUM_POINTS = 60 + 2;
|
|
Packit |
76ec6a |
static const unsigned GRAPH_MIN_HEIGHT = 40;
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
LoadGraph(guint type);
|
|
Packit |
76ec6a |
~LoadGraph();
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
unsigned num_bars() const;
|
|
Packit |
76ec6a |
void clear_background();
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
double fontsize;
|
|
Packit |
76ec6a |
double rmargin;
|
|
Packit |
76ec6a |
double indent;
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
guint n;
|
|
Packit |
76ec6a |
gint type;
|
|
Packit |
76ec6a |
guint speed;
|
|
Packit |
76ec6a |
guint draw_width, draw_height;
|
|
Packit |
76ec6a |
guint render_counter;
|
|
Packit |
76ec6a |
guint frames_per_unit;
|
|
Packit |
76ec6a |
guint graph_dely;
|
|
Packit |
76ec6a |
guint real_draw_height;
|
|
Packit |
76ec6a |
double graph_delx;
|
|
Packit |
76ec6a |
guint graph_buffer_offset;
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
std::vector<GdkRGBA> colors;
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
std::vector<double> data_block;
|
|
Packit |
76ec6a |
double* data[NUM_POINTS];
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
GtkBox *main_widget;
|
|
Packit |
76ec6a |
GtkDrawingArea *disp;
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
cairo_surface_t *background;
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
guint timer_index;
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
gboolean draw;
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
LoadGraphLabels labels;
|
|
Packit |
76ec6a |
GsmColorButton *mem_color_picker;
|
|
Packit |
76ec6a |
GsmColorButton *swap_color_picker;
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
/* union { */
|
|
Packit |
76ec6a |
struct
|
|
Packit |
76ec6a |
{
|
|
Packit |
76ec6a |
guint now; /* 0 -> current, 1 -> last
|
|
Packit |
76ec6a |
now ^ 1 each time */
|
|
Packit |
76ec6a |
/* times[now], times[now ^ 1] is last */
|
|
Packit |
76ec6a |
guint64 times[2][GLIBTOP_NCPU][N_CPU_STATES];
|
|
Packit |
76ec6a |
} cpu;
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
struct
|
|
Packit |
76ec6a |
{
|
|
Packit |
76ec6a |
guint64 last_in, last_out;
|
|
Packit |
76ec6a |
GTimeVal time;
|
|
Packit |
76ec6a |
guint64 max;
|
|
Packit |
76ec6a |
unsigned values[NUM_POINTS];
|
|
Packit |
76ec6a |
size_t cur;
|
|
Packit |
76ec6a |
} net;
|
|
Packit |
76ec6a |
/* }; */
|
|
Packit |
76ec6a |
};
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
/* Force a drawing update */
|
|
Packit |
76ec6a |
void
|
|
Packit |
76ec6a |
load_graph_queue_draw (LoadGraph *g);
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
/* Start load graph. */
|
|
Packit |
76ec6a |
void
|
|
Packit |
76ec6a |
load_graph_start (LoadGraph *g);
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
/* Stop load graph. */
|
|
Packit |
76ec6a |
void
|
|
Packit |
76ec6a |
load_graph_stop (LoadGraph *g);
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
/* Change load graph speed and restart it if it has been previously started */
|
|
Packit |
76ec6a |
void
|
|
Packit |
76ec6a |
load_graph_change_speed (LoadGraph *g,
|
|
Packit |
76ec6a |
guint new_speed);
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
/* Clear the history data. */
|
|
Packit |
76ec6a |
void
|
|
Packit |
76ec6a |
load_graph_reset (LoadGraph *g);
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
LoadGraphLabels*
|
|
Packit |
76ec6a |
load_graph_get_labels (LoadGraph *g) G_GNUC_CONST;
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
GtkBox*
|
|
Packit |
76ec6a |
load_graph_get_widget (LoadGraph *g) G_GNUC_CONST;
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
GsmColorButton*
|
|
Packit |
76ec6a |
load_graph_get_mem_color_picker(LoadGraph *g) G_GNUC_CONST;
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
GsmColorButton*
|
|
Packit |
76ec6a |
load_graph_get_swap_color_picker(LoadGraph *g) G_GNUC_CONST;
|
|
Packit |
76ec6a |
|
|
Packit |
76ec6a |
#endif /* _GSM_LOAD_GRAPH_H_ */
|