wmcpumon 1.02 (GIT-v1.02-1-g0703c24)
Data Structures | Defines | Functions | Variables
wmcpumon.c File Reference

multi CPU system monitor dockapp More...

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <inttypes.h>
#include <string.h>
#include <poll.h>
#include <ctype.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/shm.h>
#include <xcb/xcb.h>
#include <xcb/shm.h>
#include <xcb/shape.h>
#include <xcb/xcb_event.h>
#include <xcb/xcb_image.h>
#include <xcb/xcb_atom.h>
#include <xcb/xcb_icccm.h>
#include <xcb/xcb_pixel.h>
#include <xcb/screensaver.h>
#include "wmcpumon.xpm"

Data Structures

struct  cpu_info
 collected data from /proc/stat More...

Defines

#define SCREENSAVER
 config support screensaver
#define MAX_CPUS   4
 how many cpus are supported
#define _GNU_SOURCE
 we need strchrnul

Functions

void Timeout (void)
 called from event loop
xcb_image_t * XcbXpm2Image (xcb_connection_t *connection, xcb_colormap_t colormap, uint8_t depth, uint32_t transparent, const char *const *data, uint8_t **mask)
 Convert XPM graphic to xcb_image.
xcb_pixmap_t CreatePixmap (const char *const *data, xcb_pixmap_t *mask)
 Create pixmap.
void Loop (void)
 Loop.
int Init (int argc, char *const argv[])
 Init.
void Exit (void)
 Exit.
int GetStat (void)
 Read stat.
int GetMeminfo (void)
 Read meminfo.
int GetMemory (void)
 Get memory used.
int GetSwap (void)
 Get swap used.
void DrawCpuGraphs (int loops)
 Draw CPU graphs.
void DrawCpuBar (void)
 Draw CPU bar.
void DrawMemGraphs (void)
 Draw memory information.
void PrepareData (void)
 Prepare our graphic data.
static void PrintVersion (void)
 Print version.
static void PrintUsage (void)
 Print usage.
int main (int argc, char *const argv[])
 Main entry point.

Variables

xcb_connection_t * Connection
 connection to X11 server
xcb_screen_t * Screen
 our screen
xcb_window_t Window
 our window
xcb_gcontext_t NormalGC
 normal graphic context
xcb_pixmap_t Pixmap
 our background pixmap
xcb_pixmap_t Image
 drawing data
int ScreenSaverEventId
 screen saver event ids
static int StartCpu
 first cpu nr. to use
static int Rate
 update rate in ms
static char WindowMode
 start in window mode
static char Logscale
 show cpu bar in logarithmic scale
static char AllCpus
 use aggregate numbers of all cpus
static char JoinCpus
 aggregate numbers of two cpus
static char UseSleep
 use sleep while screensaver runs
static const unsigned char Log10 []
 logarithmic log10 table
struct cpu_info CpuInfo [MAX_CPUS]
 cached cpu informations
int Cpus
 number of cpus
static uint32_t MemTotal
 cached memory info total memory
static uint32_t MemFree
 cached memory info free memory
static uint32_t Cached
 cached memory info cached memory
static uint32_t SwapFree
 cached memory info free swap
static uint32_t SwapTotal
 cached memory info total swap

Detailed Description

multi CPU system monitor dockapp

Copyright (c) 2010, 2011 by Lutz Sammer. All Rights Reserved.

Contributor(s): Bitmap and design based on wmc2d.

This file is part of wmcpumon

License: AGPLv3

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License.

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 Affero General Public License for more details.

Id:
a6aace9c23328ea7c6c0abc2ec475afa360441a8

Define Documentation

#define _GNU_SOURCE

we need strchrnul

#define MAX_CPUS   4

how many cpus are supported

#define SCREENSAVER

config support screensaver


Function Documentation

xcb_pixmap_t CreatePixmap ( const char *const *  data,
xcb_pixmap_t *  mask 
)

Create pixmap.

Parameters:
dataXPM data
[out]maskPixmap for data
Returns:
pixmap created from data.
void DrawCpuBar ( void  )

Draw CPU bar.

void DrawCpuGraphs ( int  loops)

Draw CPU graphs.

Parameters:
loopsHow many loops was collected
void DrawMemGraphs ( void  )

Draw memory information.

void Exit ( void  )

Exit.

int GetMeminfo ( void  )

Read meminfo.

Returns:
-1 if failures.

FIXME: keep fd open!

int GetMemory ( void  )

Get memory used.

Returns:
the amount of memory used in procent (0-100).
int GetStat ( void  )

Read stat.

Returns:
-1 if failures.

FIXME: keep fd open!

int GetSwap ( void  )

Get swap used.

Returns:
the amount of swap used in procent (0-100); -1 no swap.
int Init ( int  argc,
char *const  argv[] 
)

Init.

Parameters:
argcnumber of arguments
argvarguments vector
Returns:
0 if success, -1 for failure
void Loop ( void  )

Loop.

int main ( int  argc,
char *const  argv[] 
)

Main entry point.

Parameters:
argcnumber of arguments
argvarguments vector
void PrepareData ( void  )

Prepare our graphic data.

static void PrintUsage ( void  ) [static]

Print usage.

static void PrintVersion ( void  ) [static]

Print version.

void Timeout ( void  )

called from event loop

Timeout call back.

xcb_image_t* XcbXpm2Image ( xcb_connection_t *  connection,
xcb_colormap_t  colormap,
uint8_t  depth,
uint32_t  transparent,
const char *const *  data,
uint8_t **  mask 
)

Convert XPM graphic to xcb_image.

Parameters:
connectionXCB connection to X11 server
colormapwindow colormap
depthimage depth
transparentpixel for transparent color
dataXPM graphic data
[out]maskbitmap mask for transparent
Returns:
image create from the XPM data.
Warning:
supports only a subset of XPM formats.

Variable Documentation

char AllCpus [static]

use aggregate numbers of all cpus

uint32_t Cached [static]

cached memory info cached memory

xcb_connection_t* Connection

connection to X11 server

struct cpu_info CpuInfo[MAX_CPUS]

cached cpu informations

int Cpus

number of cpus

xcb_pixmap_t Image

drawing data

char JoinCpus [static]

aggregate numbers of two cpus

const unsigned char Log10[] [static]
Initial value:
 {
    0, 15, 23, 30, 34, 38, 42, 45, 47, 50, 52, 53, 55, 57, 58, 60, 61, 62,
    63, 65, 66, 67, 68, 69, 69, 70, 71, 72, 73, 73, 74, 75, 75, 76, 77, 77,
    78, 78, 79, 80, 80, 81, 81, 82, 82, 83, 83, 84, 84, 84, 85, 85, 86, 86,
    87, 87, 87, 88, 88, 88, 89, 89, 89, 90, 90, 90, 91, 91, 91, 92, 92, 92,
    93, 93, 93, 94, 94, 94, 94, 95, 95, 95, 95, 96, 96, 96, 96, 97, 97, 97,
    97, 98, 98, 98, 98, 99, 99, 99, 99, 99, 100,
}

logarithmic log10 table

char Logscale [static]

show cpu bar in logarithmic scale

uint32_t MemFree [static]

cached memory info free memory

uint32_t MemTotal [static]

cached memory info total memory

xcb_gcontext_t NormalGC

normal graphic context

xcb_pixmap_t Pixmap

our background pixmap

int Rate [static]

update rate in ms

xcb_screen_t* Screen

our screen

screen saver event ids

int StartCpu [static]

first cpu nr. to use

uint32_t SwapFree [static]

cached memory info free swap

uint32_t SwapTotal [static]

cached memory info total swap

char UseSleep [static]

use sleep while screensaver runs

xcb_window_t Window

our window

char WindowMode [static]

start in window mode