1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2024-11-18 02:55:12 +00:00

use unsigned long not int for cpu% calcs. fixes bug# 1351686. patch bu boojit

git-svn-id: https://conky.svn.sourceforge.net/svnroot/conky/trunk/conky@375 7f574dfc-610e-0410-a909-a81674777703
This commit is contained in:
Philip Kovacs 2005-11-08 23:03:25 +00:00
parent 5f968c82bc
commit d841dce48a
3 changed files with 64 additions and 106 deletions

130
README
View File

@ -4,16 +4,16 @@ conky(1) conky(1)
NAME
conky - A system monitor for X originally based on the torsmo code, but
more kickass. It just keeps on given'er. Yeah.
more kickass. It just keeps on givener. Yeah.
SYNOPSIS
conky [options]
DESCRIPTION
Conky is a system monitor for X originally based on the torsmo code.
Since it's original conception, Conky has changed a fair bit from it's
Since its original conception, Conky has changed a fair bit from its
predecessor. Conky can display just about anything, either on your
root desktop or in it's own window. Conky has many built-in objects,
root desktop or in its own window. Conky has many built-in objects,
as well as the ability to execute programs and scripts, then display
the output from stdout.
@ -28,11 +28,11 @@ COMPILING
libraries installed. This should be a package along the lines of
"libx11-dev or xorg-x11-dev".
Gentoo users -- Conky is in Gentoo's Portage... simply use "emerge app-
Gentoo users -- Conky is in Gentoos Portage... simply use "emerge app-
admin/conky" for installation. There is also usually an up-to-date
ebuild within Conky's package or in CVS.
ebuild within Conkys package or in CVS.
Debian,etc. users -- Conky will be in Debian's repositories soon (by
Debian,etc. users -- Conky will be in Debians repositories soon (by
mid-September, hopefully), and then Ubuntu shortly thereafter. Until
then, "dpkg -i" the .deb package to install.
@ -43,7 +43,7 @@ COMPILING
./configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc
--localstatedir=/var/lib --enable-xft --enable-seti --enable-dou-
--localstatedir=/var/lib --enable-xft --enable-seti --enable-dou
ble-buffer --enable-own-window --enable-proc-uptime --enable-mpd
--enable-mldonkey --enable-x11 --enable-portmon
@ -53,14 +53,14 @@ COMPILING
src/conky
Conky probably doesn't compile with compilers other than gcc and icc.
It doesn't compile with C89 compiler and not even with pure C99. It
uses a few things that might not exist: strdup(), strcasecmp(), strn-
Conky probably doesnt compile with compilers other than gcc and icc.
It doesnt compile with C89 compiler and not even with pure C99. It
uses a few things that might not exist: strdup(), strcasecmp(), strn
casecmp(), optarg variable with getopt() and long long (not in C89).
Crashes in file system statistics stuff when compiled with icc, I don't
Crashes in file system statistics stuff when compiled with icc, I dont
know exactly why.
You can disable 'drawing to own window' feature in case you don't need
You can disable drawing to own window feature in case you dont need
it by passing --disable-own-window to configure -script.
@ -71,14 +71,14 @@ YOU SHOULD KNOW
rest of Conky.
If you do use them, please do not complain about memory or CPU usage,
unless you think something's seriously wrong (mem leak, etc.).
unless you think somethings seriously wrong (mem leak, etc.).
An easy way to force Conky to reload your ~/.conkyrc: "killall -SIGUSR1
conky". Saves you the trouble of having to kill and then restart.
IMPORTANT: For previous Conky users, Conky 1.3 no longer supports the
metar stuff. mdsplib was causing way too many problems. Hopefully
there'll be a better solution in Conky 2.x...
therell be a better solution in Conky 2.x...
OPTIONS
Command line options override configurations defined in configuration
@ -113,7 +113,7 @@ OPTIONS
-t TEXT
Text to render, remember single quotes, like -t ' $uptime '
Text to render, remember single quotes, like -t $uptime
-u SECONDS
@ -135,14 +135,14 @@ OPTIONS
CONFIGURATION SETTINGS
Default configuration file is $HOME/.conkyrc (can be changed from
conky.c among other things). See conkyrc.sample. If installing from
Debian package, this should be in /usr/share/doc/conky/examples ("gun-
Debian package, this should be in /usr/share/doc/conky/examples ("gun
zip conkyrc.sample.gz" to get conkyrc.sample).
You might want to copy it to $HOME/.conkyrc and then start modifying
it. Other configs can be found at http://conky.sf.net
alignment
Aligned position on screen, may be top_left, top_right, bot-
Aligned position on screen, may be top_left, top_right, bot
tom_left, bottom_right, or none
@ -172,7 +172,7 @@ CONFIGURATION SETTINGS
default_shade_color
Default shading color and border's shading color
Default shading color and borders shading color
default_outline_color
@ -180,8 +180,8 @@ CONFIGURATION SETTINGS
double_buffer
Use the Xdbe extension? (eliminates flicker) It is highly recom-
mended to use own window with this one so double buffer won't be
Use the Xdbe extension? (eliminates flicker) It is highly recom
mended to use own window with this one so double buffer wont be
so big.
@ -311,7 +311,7 @@ CONFIGURATION SETTINGS
VARIABLES
Colors are parsed using XParsecolor(), there might be a list of them:
/usr/X11R6/lib/X11/rgb.txt. Also, http://sedition.com/perl/rgb.html
[http://sedition.com/perl/rgb.html]. Color can be also in #rrggbb for-
[http://sedition.com/perl/rgb.html]. Color can be also in #rrggbb for
mat (hex). Note that when displaying bytes, power is 1024 and not 1000
so 1M really means 1024*1024 bytes and not 1000*1000.
@ -387,7 +387,7 @@ VARIABLES
cpubar (cpu number) (height),(width)
Bar that shows CPU usage, height is bar's height in pixels. See
Bar that shows CPU usage, height is bars height in pixels. See
$cpu for more info on SMP.
@ -424,8 +424,8 @@ VARIABLES
exec command
Executes a shell command and displays the output in conky. warn-
ing: this takes a lot more resources than other variables. I'd
Executes a shell command and displays the output in conky. warn
ing: this takes a lot more resources than other variables. Id
recommend coding wanted behaviour in C and posting a patch.
@ -440,7 +440,7 @@ VARIABLES
execi interval command
Same as exec but with specific interval. Interval can't be less
Same as exec but with specific interval. Interval cant be less
than update_interval in configuration. See also $texeci
@ -497,7 +497,7 @@ VARIABLES
head logfile lines (interval)
Displays first N lines of supplied text text file. If interval
is not supplied, Conky assumes 2x Conky's interval. Max of 30
is not supplied, Conky assumes 2x Conkys interval. Max of 30
lines can be displayed, or until the text buffer is filled.
@ -542,7 +542,7 @@ VARIABLES
i8k_left_fan_rpm
If running the i8k kernel driver for Inspiron laptops, displays
the left fan's rate of rotation, in revolutions per minute as
the left fans rate of rotation, in revolutions per minute as
listed in /proc/i8k. Beware, some laptops i8k reports these fans
in reverse order.
@ -556,7 +556,7 @@ VARIABLES
i8k_right_fan_rpm
If running the i8k kernel driver for Inspiron laptops, displays
the right fan's rate of rotation, in revolutions per minute as
the right fans rate of rotation, in revolutions per minute as
listed in /proc/i8k. Beware, some laptops i8k reports these fans
in reverse order.
@ -628,46 +628,6 @@ VARIABLES
Percentage of memory in use
ml_upload_counter
total session upload in mb
ml_download_counter
total session download in mb
ml_nshared_files
number of shared files
ml_shared_counter
total session shared in mb, buggy in some mldonkey versions
ml_tcp_upload_rate
tcp upload rate in kb/s
ml_tcp_download_rate
tcp download rate in kb/s
ml_udp_upload_rate
udp upload rate in kb/s
ml_udp_download_rate
udp download rate in kb/s
ml_ndownloaded_files
number of completed files
ml_ndownloading_files
number of downloading files
mpd_artist
Artist in current MPD song must be enabled at compile
@ -677,7 +637,7 @@ VARIABLES
mpd_bar (height),(width)
Bar of mpd's progress
Bar of mpds progress
mpd_bitrate
@ -693,19 +653,19 @@ VARIABLES
mpd_vol
MPD's volume
MPDs volume
mpd_elapsed
Song's elapsed time
Songs elapsed time
mpd_length
Song's length
Songs length
mpd_percent
Percent of song's progress
Percent of songs progress
mpd_random
@ -798,7 +758,7 @@ VARIABLES
Examples:
${tcp_portmon 6881 6889 count} - displays the number of connec-
${tcp_portmon 6881 6889 count} - displays the number of connec
tions in the bittorrent port range
${tcp_portmon 22 22 rip 0} - displays the remote host ip of the
@ -817,7 +777,7 @@ VARIABLES
name of the fifteenth connection in the range of all ports
Note that port monitor variables which share the same port range
actually refer to the same monitor, so many references to a sin-
actually refer to the same monitor, so many references to a sin
gle port range for different items and different indexes all use
the same monitor internally. In other words, the program avoids
creating redundant monitors.
@ -825,7 +785,7 @@ VARIABLES
texeci interval command
Runs a command at an interval inside a thread and displays the
output. Same as $execi, except the command is run inside a
thread. Use this if you have a slow script to keep Conky updat-
thread. Use this if you have a slow script to keep Conky updat
ing. You should make the interval slightly longer then the time
it takes your script to execute. For example, if you have a
script that take 5 seconds to execute, you should make the
@ -838,18 +798,18 @@ VARIABLES
tail logfile lines (interval)
Displays last N lines of supplied text text file. If interval is
not supplied, Conky assumes 2x Conky's interval. Max of 30 lines
not supplied, Conky assumes 2x Conkys interval. Max of 30 lines
can be displayed, or until the text buffer is filled.
time (format)
Local time, see man strftime to get more information about for-
Local time, see man strftime to get more information about for
mat
totaldown net
Total download, overflows at 4 GB on Linux with 32-bit arch and
there doesn't seem to be a way to know how many times it has
there doesnt seem to be a way to know how many times it has
already done that before conky has started.
@ -912,7 +872,7 @@ VARIABLES
EXAMPLES
conky -t '${time %D %H:%m}' -o -u 30
conky -t ${time %D %H:%m} -o -u 30
Start Conky in its own window with date and clock as text and 30
sec update interval.
@ -923,9 +883,9 @@ FILES
~/.conkyrc default configuration file
BUGS
Drawing to root or some other desktop window directly doesn't work with
all window managers. Especially doesn't work well with Gnome and it has
been reported that it doesn't work with KDE either. Nautilus can be
Drawing to root or some other desktop window directly doesnt work with
all window managers. Especially doesnt work well with Gnome and it has
been reported that it doesnt work with KDE either. Nautilus can be
disabled from drawing to desktop with program gconf-editor. Uncheck
show_desktop in /apps/nautilus/preferences/. There is -w switch in
Conky to set some specific window id. You might find xwininfo -tree
@ -935,13 +895,13 @@ BUGS
SEE ALSO
http://conky.sourceforge.net [http://conky.sourceforge.net]
http://www.sourceforge.net/projects/conky [http://www.source-
http://www.sourceforge.net/projects/conky [http://www.source
forge.net/projects/conky]
#conky on irc.freenode.net
AUTHORS
The Conky dev team. What's up now!
The Conky dev team. Whats up now!

View File

@ -340,11 +340,11 @@ struct process {
pid_t pid;
char *name;
float amount;
unsigned int user_time;
unsigned int total;
unsigned int kernel_time;
unsigned int previous_user_time;
unsigned int previous_kernel_time;
unsigned long user_time;
unsigned long total;
unsigned long kernel_time;
unsigned long previous_user_time;
unsigned long previous_kernel_time;
unsigned int vsize;
unsigned int rss;
unsigned int time_stamp;

View File

@ -10,7 +10,7 @@
static regex_t *exclusion_expression = 0;
static unsigned int g_time = 0;
static int previous_total = 0;
static unsigned long previous_total = 0;
static struct process *first_process = 0;
static struct process *find_process(pid_t pid)
@ -63,8 +63,8 @@ static int calculate_cpu(struct process *);
static void process_cleanup(void);
static void delete_process(struct process *);
/*inline void draw_processes(void);*/
static int calc_cpu_total(void);
static void calc_cpu_each(int);
static unsigned long calc_cpu_total(void);
static void calc_cpu_each(unsigned long);
/******************************************/
@ -81,7 +81,7 @@ static int process_parse_stat(struct process *process)
cur = &info;
char line[BUFFER_LEN], filename[BUFFER_LEN], procname[BUFFER_LEN];
int ps;
int user_time, kernel_time;
unsigned long user_time, kernel_time;
int rc;
char *r, *q;
char deparenthesised_name[BUFFER_LEN];
@ -112,7 +112,7 @@ static int process_parse_stat(struct process *process)
* Extract cpu times from data in /proc filesystem
*/
rc = sscanf(line,
"%*s %s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %d %d %*s %*s %*s %d %*s %*s %*s %d %d",
"%*s %s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %lu %lu %*s %*s %*s %d %*s %*s %*s %d %d",
procname, &process->user_time, &process->kernel_time,
&nice_val, &process->vsize, &process->rss);
if (rc < 5)
@ -166,9 +166,9 @@ static int process_parse_stat(struct process *process)
process->totalmem = ((float) process->rss / cur->memmax) / 10;
if (process->previous_user_time == INT_MAX)
if (process->previous_user_time == ULONG_MAX)
process->previous_user_time = process->user_time;
if (process->previous_kernel_time == INT_MAX)
if (process->previous_kernel_time == ULONG_MAX)
process->previous_kernel_time = process->kernel_time;
/* store the difference of the user_time */
@ -319,27 +319,25 @@ static void delete_process(struct process *p)
/* Calculate cpu total */
/******************************************/
static int calc_cpu_total()
static unsigned long calc_cpu_total()
{
int total, t;
unsigned long total, t;
int rc;
int ps;
char line[BUFFER_LEN];
int cpu, nice, system, idle;
unsigned long cpu, nice, system, idle;
ps = open("/proc/stat", O_RDONLY);
rc = read(ps, line, sizeof(line));
close(ps);
if (rc < 0)
return 0;
sscanf(line, "%*s %d %d %d %d", &cpu, &nice, &system, &idle);
sscanf(line, "%*s %lu %lu %lu %lu", &cpu, &nice, &system, &idle);
total = cpu + nice + system + idle;
t = total - previous_total;
previous_total = total;
if (t < 0)
t = 0;
return t;
}
@ -348,7 +346,7 @@ static int calc_cpu_total()
/* Calculate each processes cpu */
/******************************************/
inline static void calc_cpu_each(int total)
inline static void calc_cpu_each(unsigned long total)
{
struct process *p = first_process;
while (p) {
@ -404,8 +402,8 @@ inline void process_find_top(struct process **cpu, struct process **mem)
sorttmp = malloc(sizeof(struct process) * sorttmp_size);
assert(sorttmp != NULL);
}
int total;
unsigned int i, j;
unsigned long total;
unsigned long i, j;
total = calc_cpu_total(); /* calculate the total of the processor */