dockapps/wmsupermon/stat_dev.h

102 lines
2.8 KiB
C
Raw Normal View History

/* Copyright (C) 2006 Sergei Golubchik
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/*
originally based on
WMgMon - Window Maker Generic Monitor
by Nicolas Chauvat <nico@caesium.fr>
which was based on
WMMon from Antoine Nulle and Martijn Pieterse.
*/
#ifndef __STAT_DEV_H
#define __STAT_DEV_H
#include <string.h>
#include <stdio.h>
#define INIT 0
#define NORMAL 1
#define CLOSE 2
#define TEMP_SIZE 128
#define STRARG_LEN 255
#define NAME_LEN 3
#define MIN_FILE_LEN 8192
/******************************************************************************/
/* stat_dev structure and related functions */
/******************************************************************************/
#define HIST_SIZE 55
#define HIST_LAST 54
#define SMOOTH_SIZE 8
/* note that P_SMOOTH and P_LOG *must* be 0 and 1 respectively */
#define P_SMOOTH (1L << 0)
#define P_LOG (1L << 1)
#define P_LABEL (1L << 2)
#define P_FLOAT (1L << 3)
#define P_SMALL (1L << 4)
#define P_MEDIUM (1L << 5)
#define P_BIG (1L << 6)
#define P_SCALEDOWN (1L << 7)
#define P_SIZE (P_SMALL | P_MEDIUM | P_BIG)
/* the following is an index in stat_dev::hist[] array */
#define P_HIST (P_SMOOTH | P_LOG)
#define F_SINGLE_LINE 1 /* regex flag */
#define F_DEBUG 2
#define F_USED 4
typedef struct {
double data[HIST_SIZE];
double max;
unsigned count;
} history;
typedef struct {
char name[NAME_LEN+1]; /* cpu, mem, swap, i/o, etc. */
double scale;
double min,max; /* range for the bar/graph */
unsigned flags; /* F_xxx from above */
char *action;
char *source;
regex_t regex;
Expr *expr;
double *diff_old, *diff_new, *sum_acc;
unsigned nsum; /* number of elements in sum_acc */
double value[P_SMOOTH+1]; /* "real-time" stat */
double *smooth; /* 0 if unused */
history *hist[P_HIST+1]; /* 0 if unused */
unsigned update_interval;
unsigned next_update;
unsigned hist_update_interval;
unsigned hist_next_update;
} stat_dev;
void stat_dev_init(stat_dev * st);
void stat_dev_initstat(stat_dev * st);
void stat_dev_update_history (stat_dev * st);
void update_stat(stat_dev *);
/*
* END
*/
#endif