This file uses time_t and thus must include time.h Signed-off-by: Harald Geyer <harald@ccbib.org>
210 lines
6.7 KiB
C
210 lines
6.7 KiB
C
/** \file clients/lcdproc/machine.h
|
|
* Common data types and function declarations
|
|
* for OS specific sources in \c machine_{Darwin,Linux,SunOS,*BSD}.c.
|
|
*
|
|
* In order to port the \e lcdproc client to a new operating system,
|
|
* a new file \c machine_XXX.c (where \c XXX = OS name) needs to be
|
|
* created, that provides functions to the function declarations below.
|
|
* The aleady existing \c machine_*.c files can be used as examples.
|
|
*
|
|
*/
|
|
|
|
#ifndef _lcdproc_machine_h_
|
|
#define _lcdproc_machine_h_
|
|
|
|
#include <time.h>
|
|
#include "shared/LL.h"
|
|
|
|
#ifndef LOADAVG_NSTATS
|
|
# define LOADAVG_NSTATS 3 /**< size of loadavg[] parameter to getloadavg() */
|
|
#endif
|
|
|
|
#ifndef LOADAVG_1MIN
|
|
# define LOADAVG_1MIN 0 /**< index in loadavg[] parameter to getloadavg() for 1 minute load average */
|
|
#endif
|
|
|
|
#ifndef LOADAVG_5MIN
|
|
# define LOADAVG_5MIN 1 /**< index in loadavg[] parameter to getloadavg() for 5 minute load average */
|
|
#endif
|
|
|
|
#ifndef LOADAVG_15MIN
|
|
# define LOADAVG_15MIN 2 /**< index in loadavg[] parameter to getloadavg() for 15 minute load average */
|
|
#endif
|
|
|
|
#ifndef MAX_CPUS
|
|
# define MAX_CPUS 16 /**< maximal number of CPUs for which load history is kept */
|
|
#endif
|
|
|
|
|
|
/** Information about CPU load */
|
|
typedef struct
|
|
{
|
|
unsigned long total; /**< total time (in USER_HZ; since last call) */
|
|
unsigned long user; /**< time in user mode (in USER_HZ; since last call) */
|
|
unsigned long system; /**< time in kernel mode (in USER_HZ; since last call) */
|
|
unsigned long nice; /**< time in 'niced' user mode (in USER_HZ; since last call) */
|
|
unsigned long idle; /**< time idling (in USER_HZ; since last call) */
|
|
} load_type;
|
|
|
|
|
|
/** Information about mounted file systems */
|
|
typedef struct
|
|
{
|
|
char dev[256]; /**< device name */
|
|
char type[64]; /**< file system type (as string) */
|
|
char mpoint[256]; /**< mount point name */
|
|
long bsize; /**< transfer block size */
|
|
long blocks; /**< total data blocks in file system */
|
|
long bfree; /**< free blocks in fs */
|
|
long files; /**< total file nodes in file system */
|
|
long ffree; /**< free file nodes in fs */
|
|
} mounts_type;
|
|
|
|
|
|
/** Information about memory status */
|
|
typedef struct
|
|
{
|
|
long total; /**< total memory (in kB) */
|
|
long cache; /**< memory in page cache (in kB) */
|
|
long buffers; /**< memory in buffer cache (in kB) */
|
|
long free; /**< free memory (in kB) */
|
|
long shared; /**< ??? (in kB) */
|
|
} meminfo_type;
|
|
|
|
|
|
/** Information about processes and their size */
|
|
typedef struct
|
|
{
|
|
char name[16]; /**< process name */
|
|
long totl; /**< process memory usage (in kB) */
|
|
int number; /**< incstances of the process */
|
|
} procinfo_type;
|
|
|
|
|
|
/** Status definitions for network interfaces */
|
|
typedef enum {
|
|
down = 0,
|
|
up = 1,
|
|
} IfaceStatus;
|
|
|
|
/* Network Interface information */
|
|
typedef struct iface_info
|
|
{
|
|
char *name; /**< physical interface name */
|
|
char *alias; /**< displayed name of interface */
|
|
|
|
IfaceStatus status; /**< status of the interface */
|
|
|
|
time_t last_online;
|
|
|
|
double rc_byte; /**< currently received bytes */
|
|
double rc_byte_old; /**< previously received bytes */
|
|
|
|
double tr_byte; /**< currently sent bytes */
|
|
double tr_byte_old; /**< previously sent bytes */
|
|
|
|
double rc_pkt; /**< currently received packages */
|
|
double rc_pkt_old; /**< previously received packages */
|
|
|
|
double tr_pkt; /**< currently sent packages */
|
|
double tr_pkt_old; /**< previously sent packages */
|
|
} IfaceInfo;
|
|
|
|
|
|
/**
|
|
* Set up OS specific functions.
|
|
* \retval FALSE Error
|
|
* \retval TRUE OK
|
|
*/
|
|
int machine_init(void);
|
|
|
|
/**
|
|
* Tear down (clean up) OS specific functions.
|
|
* \retval FALSE Error
|
|
* \retval TRUE OK
|
|
*/
|
|
int machine_close(void);
|
|
|
|
|
|
/**
|
|
* Get battery information.
|
|
* \param acstat Pointer to information whether the system runs on AC power or on battery.
|
|
* \param battflag Pointer to information about the battery load status.
|
|
* \param percent Pointer to the battery fill state.
|
|
* \retval FALSE Error, do not trust the contents of the parameter pointers.
|
|
* \retval TRUE OK, parameter pointers are filled with sensible data.
|
|
*/
|
|
int machine_get_battstat(int *acstat, int *battflag, int *percent);
|
|
|
|
/**
|
|
* get information about mounted file systems.
|
|
* \param fs Pointer to array where file system information gets stored.
|
|
* \param cnt Number of mounted file systems.
|
|
* \retval FALSE Error, do not trust the contents of the parameter pointers.
|
|
* \retval TRUE OK, parameter pointers are filled with sensible data.
|
|
*/
|
|
int machine_get_fs(mounts_type fs[], int *cnt);
|
|
|
|
/**
|
|
* Get total CPU load (added over all CPUs).
|
|
* \param cur_load Pointer where to store current load information.
|
|
* \retval FALSE Error, do not trust the contents of the parameter pointers.
|
|
* \retval TRUE OK, parameter pointers are filled with sensible data.
|
|
*/
|
|
int machine_get_load(load_type *cur_load);
|
|
|
|
/**
|
|
* Get load 1min load average.
|
|
* \param load Pointer where to store the current 1min load average.
|
|
* \retval FALSE Error, do not trust the contents of the parameter pointers.
|
|
* \retval TRUE OK, parameter pointers are filled with sensible data.
|
|
*/
|
|
int machine_get_loadavg(double *load);
|
|
|
|
/**
|
|
* Get information about memory.
|
|
* \param result Pointer where meminfo is to be stored.
|
|
* \retval FALSE Error, do not trust the contents of the parameter pointers.
|
|
* \retval TRUE OK, parameter pointers are filled with sensible data.
|
|
*/
|
|
int machine_get_meminfo(meminfo_type *result);
|
|
|
|
/**
|
|
* Get list of processes and their sizes.
|
|
* \param procs Pointer where to store the linked List of processes.
|
|
* \retval FALSE Error, do not trust the contents of the parameter pointers.
|
|
* \retval TRUE OK, parameter pointers are filled with sensible data.
|
|
*/
|
|
int machine_get_procs(LinkedList *procs);
|
|
|
|
/**
|
|
* Get CPU load split up for each CPU.
|
|
* \param result Pointer to array of CPU load info.
|
|
* \param numcpus Number of CPUs found.
|
|
* \retval FALSE Error, do not trust the contents of the parameter pointers.
|
|
* \retval TRUE OK, parameter pointers are filled with sensible data.
|
|
*/
|
|
int machine_get_smpload(load_type *result, int *numcpus);
|
|
|
|
/**
|
|
* Get uptime.
|
|
* \param up Pointer to store the uptime in seconds.
|
|
* \param idle Pointer to store the percentage in which the CPUs idled since boot.
|
|
* \retval FALSE Error, do not trust the contents of the parameter pointers.
|
|
* \retval TRUE OK, parameter pointers are filled with sensible data.
|
|
*/
|
|
int machine_get_uptime(double *up, double *idle);
|
|
|
|
/**
|
|
* Read network interface statistics for a single interface from system and
|
|
* store results in the struct IfaceInfo.
|
|
*
|
|
* \param interface Pointer where to store interface info.
|
|
* \retval FALSE Error, do not trust the contents of the parameter pointers.
|
|
* \retval TRUE OK, parameter pointers are filled with sensible data.
|
|
*/
|
|
int machine_get_iface_stats(IfaceInfo *interface);
|
|
|
|
|
|
#endif /* _lcdproc_machine_h_ */
|