diff options
author | Bernard Cafarelli <voyageur@gentoo.org> | 2012-04-18 09:32:31 +0000 |
---|---|---|
committer | Bernard Cafarelli <voyageur@gentoo.org> | 2012-04-18 09:32:31 +0000 |
commit | 1a5c022e48d4dc16dedac327b1aaefe95f096529 (patch) | |
tree | 8e4c5aec498d062d5f245c5b537ede53355be3a6 /x11-plugins/wmtop | |
parent | Fix building in the absence of qt-qt3support, add -j1 to emake install, bug #... (diff) | |
download | gentoo-2-1a5c022e48d4dc16dedac327b1aaefe95f096529.tar.gz gentoo-2-1a5c022e48d4dc16dedac327b1aaefe95f096529.tar.bz2 gentoo-2-1a5c022e48d4dc16dedac327b1aaefe95f096529.zip |
Fix memory usage monitor, report and patch by wbk in bug #410093
(Portage version: 2.2.0_alpha100/cvs/Linux x86_64)
Diffstat (limited to 'x11-plugins/wmtop')
-rw-r--r-- | x11-plugins/wmtop/ChangeLog | 10 | ||||
-rw-r--r-- | x11-plugins/wmtop/files/wmtop-0.9.0-meminfo.patch | 189 | ||||
-rw-r--r-- | x11-plugins/wmtop/wmtop-0.9.0-r1.ebuild | 39 |
3 files changed, 236 insertions, 2 deletions
diff --git a/x11-plugins/wmtop/ChangeLog b/x11-plugins/wmtop/ChangeLog index cb8ee7199df0..60e47a54da4c 100644 --- a/x11-plugins/wmtop/ChangeLog +++ b/x11-plugins/wmtop/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for x11-plugins/wmtop -# Copyright 2002-2010 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/x11-plugins/wmtop/ChangeLog,v 1.14 2010/09/06 07:59:28 s4t4n Exp $ +# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/x11-plugins/wmtop/ChangeLog,v 1.15 2012/04/18 09:32:30 voyageur Exp $ + +*wmtop-0.9.0-r1 (18 Apr 2012) + + 18 Apr 2012; Bernard Cafarelli <voyageur@gentoo.org> +wmtop-0.9.0-r1.ebuild, + +files/wmtop-0.9.0-meminfo.patch: + Fix memory usage monitor, report and patch by wbk in bug #410093 06 Sep 2010; Michele Noberasco <s4t4n@gentoo.org> wmtop-0.9.0.ebuild: Honour Gentoo LDFLAGS. Closes bug #335953. diff --git a/x11-plugins/wmtop/files/wmtop-0.9.0-meminfo.patch b/x11-plugins/wmtop/files/wmtop-0.9.0-meminfo.patch new file mode 100644 index 000000000000..541ab6a1d697 --- /dev/null +++ b/x11-plugins/wmtop/files/wmtop-0.9.0-meminfo.patch @@ -0,0 +1,189 @@ +--- wmtop.c.orig 2001-01-19 15:41:20.000000000 -0600 ++++ wmtop.c 2012-03-29 22:36:49.906684353 -0500 +@@ -182,12 +182,12 @@ + pid_t pid; + char *name; + float amount; +- int user_time; +- int kernel_time; +- int previous_user_time; +- int previous_kernel_time; +- int vsize; +- int rss; ++ unsigned long user_time; ++ unsigned long kernel_time; ++ unsigned long previous_user_time; ++ unsigned long previous_kernel_time; ++ unsigned long vsize; ++ long rss; + int time_stamp; + int counted; + }; +@@ -236,8 +236,8 @@ + + process->pid = p; + process->time_stamp = 0; +- process->previous_user_time = INT_MAX; +- process->previous_kernel_time = INT_MAX; ++ process->previous_user_time = ULONG_MAX; ++ process->previous_kernel_time = ULONG_MAX; + process->counted = 1; + + /* process_find_name(process);*/ +@@ -256,11 +256,11 @@ + void process_cleanup(void); + void delete_process(struct process *); + inline void draw_processes(void); +-int calc_cpu_total(void); +-void calc_cpu_each(int); ++unsigned long calc_cpu_total(void); ++void calc_cpu_each(unsigned long total); + #if defined(LINUX) +-int calc_mem_total(void); +-void calc_mem_each(int); ++unsigned long calc_mem_total(void); ++void calc_mem_each(unsigned long total); + #endif + int process_find_top_three(struct process **); + void draw_bar(int, int, int, int, float, int, int); +@@ -457,13 +457,15 @@ + char line[WMTOP_BUFLENGTH],filename[WMTOP_BUFLENGTH],procname[WMTOP_BUFLENGTH]; + int ps; + struct stat sbuf; +- int user_time,kernel_time; ++ unsigned long user_time,kernel_time; + int rc; + #if defined(LINUX) + char *r,*q; + char deparenthesised_name[WMTOP_BUFLENGTH]; + #endif /* defined(LINUX) */ + #if defined(FREEBSD) ++ /* TODO: needs analysis. Probably needs same data type fix as LINUX (use ++ * long types). Need to check FreeBSD docs and test. -wbk */ + int us,um,ks,km; + #endif /* defined(FREEBSD) */ + +@@ -501,9 +503,10 @@ + + #if defined(LINUX) + /* +- * Extract cpu times from data in /proc filesystem ++ * Extract cpu times from data in /proc filesystem. ++ * For conversion types see man proc(5). + */ +- rc = sscanf(line,"%*s %s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %d %d %*s %*s %*s %*s %*s %*s %*s %d %d", ++ rc = sscanf(line,"%*s %s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %lu %lu %*s %*s %*s %*s %*s %*s %*s %lu %ld", + procname, + &process->user_time,&process->kernel_time, + &process->vsize,&process->rss); +@@ -527,6 +530,9 @@ + /* + * Extract cpu times from data in /proc/<pid>/stat + * XXX: Process name extractor for FreeBSD is untested right now. ++ * ++ * [TODO: FREEBSD code probably needs similar data type changes to ++ * those made for LINUX above. Need to check docs. -wbk] + */ + rc = sscanf(line,"%s %*s %*s %*s %*s %*s %*s %*s %d,%d %d,%d", + procname, +@@ -540,11 +546,14 @@ + process->kernel_time = ks*1000+km/1000; + #endif /* defined(FREEBSD) */ + ++ /* not portable (especially unsuitable for redistributable executables. ++ * On some systems, getpagesize() is a preprocessor macro). ++ */ + process->rss *= getpagesize(); + +- 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; + + user_time = process->user_time-process->previous_user_time; +@@ -686,7 +695,7 @@ + void draw_processes() { + int i,n; + struct process *best[3] = { 0, 0, 0 }; +- int total; ++ unsigned long total; + + /* + * Invalidate time stamps +@@ -743,21 +752,21 @@ + /* Calculate cpu total */ + /******************************************/ + +-int calc_cpu_total() { +- int total,t; +- static int previous_total = INT_MAX; ++unsigned long calc_cpu_total() { ++ unsigned long total,t; ++ static unsigned long previous_total = ULONG_MAX; + #if defined(LINUX) + int rc; + int ps; + char line[WMTOP_BUFLENGTH]; +- 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; + #endif /* defined(LINUX) */ + +@@ -780,7 +789,7 @@ + /* Calculate each processes cpu */ + /******************************************/ + +-void calc_cpu_each(int total) { ++void calc_cpu_each(unsigned long total) { + struct process *p = first_process; + while (p) { + +@@ -798,7 +807,8 @@ + /******************************************/ + + #if defined(LINUX) +-int calc_mem_total() { ++/* INT_MAX won't always hold total system RAM, especially on a 64 bit system. */ ++unsigned long calc_mem_total() { + int ps; + char line[512]; + char *ptr; +@@ -810,11 +820,12 @@ + if (rc<0) + return 0; + +- if ((ptr = strstr(line, "Mem:")) == NULL) { ++ if ((ptr = strstr(line, "MemTotal:")) == NULL) { + return 0; + } else { +- ptr += 4; +- return atoi(ptr); ++ ptr += 9; /* move into whitespace */ ++ /* wbk - old Mem: Total was bytes. MemTotal: is KB */ ++ return (unsigned long)atoi(ptr) * 1024; + } + + } +@@ -825,10 +836,10 @@ + /******************************************/ + + #if defined(LINUX) +-void calc_mem_each(int total) { ++void calc_mem_each(unsigned long total) { + struct process *p = first_process; + while (p) { +- p->amount = 100*(float)p->rss/total; ++ p->amount = 100*(double)p->rss/total; + p = p->next; + } + } diff --git a/x11-plugins/wmtop/wmtop-0.9.0-r1.ebuild b/x11-plugins/wmtop/wmtop-0.9.0-r1.ebuild new file mode 100644 index 000000000000..662df9cd6d52 --- /dev/null +++ b/x11-plugins/wmtop/wmtop-0.9.0-r1.ebuild @@ -0,0 +1,39 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/x11-plugins/wmtop/wmtop-0.9.0-r1.ebuild,v 1.1 2012/04/18 09:32:30 voyageur Exp $ + +EAPI=4 +inherit eutils multilib toolchain-funcs + +DESCRIPTION="dockapp for monitoring the top three processes using cpu or memory." +HOMEPAGE="http://www.swanson.ukfsn.org/#wmtop" +SRC_URI="http://www.swanson.ukfsn.org/wmdock/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~sparc ~x86" +IUSE="" + +RDEPEND="x11-libs/libX11 + x11-libs/libXpm + x11-libs/libXext" +DEPEND="${RDEPEND} + x11-proto/xproto + x11-proto/xextproto" + +src_prepare() { + sed -ie "s/\$(FLAGS) -o wmtop/\$(DEBUG) \$(LDFLAGS) -D\$(OS) -o wmtop/" Makefile || die "sed failed" + epatch "${FILESDIR}"/${P}-meminfo.patch +} + +src_compile() { + emake CC="$(tc-getCC)" OPTS="${CFLAGS}" \ + LIBDIR="-L/usr/$(get_libdir)" \ + INCS="-I/usr/include/X11" linux +} + +src_install() { + dobin ${PN} + doman ${PN}.1 + dodoc BUGS CHANGES README TODO +} |