You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
(32) |
Sep
(21) |
Oct
(2) |
Nov
(1) |
Dec
(5) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(11) |
Feb
(1) |
Mar
(5) |
Apr
(11) |
May
(5) |
Jun
(3) |
Jul
(7) |
Aug
(14) |
Sep
(4) |
Oct
(1) |
Nov
(8) |
Dec
(5) |
2007 |
Jan
(1) |
Feb
(16) |
Mar
(5) |
Apr
(5) |
May
|
Jun
(1) |
Jul
|
Aug
(3) |
Sep
(9) |
Oct
(1) |
Nov
|
Dec
(4) |
2008 |
Jan
(9) |
Feb
(5) |
Mar
(10) |
Apr
(17) |
May
(2) |
Jun
(10) |
Jul
(13) |
Aug
(5) |
Sep
(4) |
Oct
|
Nov
|
Dec
(4) |
2009 |
Jan
(2) |
Feb
|
Mar
(3) |
Apr
(14) |
May
(29) |
Jun
(7) |
Jul
(10) |
Aug
(4) |
Sep
(7) |
Oct
(3) |
Nov
(3) |
Dec
(5) |
2010 |
Jan
(17) |
Feb
|
Mar
(3) |
Apr
(1) |
May
(10) |
Jun
(2) |
Jul
|
Aug
(2) |
Sep
|
Oct
(1) |
Nov
|
Dec
(9) |
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
(1) |
Jul
|
Aug
(1) |
Sep
|
Oct
(2) |
Nov
(2) |
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(11) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2013 |
Jan
(13) |
Feb
(5) |
Mar
|
Apr
|
May
|
Jun
(2) |
Jul
(1) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(2) |
Dec
(1) |
2016 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
From: Nikos N. <nt...@cs...> - 2010-12-05 04:26:02
|
Signed-off-by: Nikos Ntarmos <nt...@cs...> --- src/core.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core.c b/src/core.c index 5a146f9..e93ef58 100644 --- a/src/core.c +++ b/src/core.c @@ -541,11 +541,11 @@ struct text_object *construct_text_object(const char *s, const char *arg, long parse_platform_sensor(obj, arg); END OBJ_ARG(hwmon, 0, "hwmon needs argumanets") parse_hwmon_sensor(obj, arg); - END OBJ(addr, &update_net_stats) - parse_net_stat_arg(obj, arg, free_at_crash); END OBJ(addrs, &update_net_stats) parse_net_stat_arg(obj, arg, free_at_crash); #endif /* __linux__ */ + END OBJ(addr, &update_net_stats) + parse_net_stat_arg(obj, arg, free_at_crash); END /* we have four different types of top (top, top_mem, top_time and top_io). To * avoid having almost-same code four times, we have this special @@ -577,7 +577,7 @@ struct text_object *construct_text_object(const char *s, const char *arg, long obj->data.s = strndup(arg, text_buffer_size); END OBJ_IF_ARG(if_mounted, 0, "if_mounted needs an argument") obj->data.s = strndup(arg, text_buffer_size); -#ifdef __linux__ +#if defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) END OBJ_IF_ARG(if_running, &update_top, "if_running needs an argument") top_running = 1; obj->data.s = strndup(arg, text_buffer_size); -- 1.7.2.3 |
From: Nikos N. <nt...@cs...> - 2010-12-05 04:26:00
|
Signed-off-by: Nikos Ntarmos <nt...@cs...> --- src/exec.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/exec.c b/src/exec.c index 5c9662c..c9e4261 100644 --- a/src/exec.c +++ b/src/exec.c @@ -93,6 +93,7 @@ static FILE* pid_popen(const char *command, const char *mode, pid_t *child) { } else { close(1); } + close(parentend); dup(childend); //by dupping childend, the returned fd will have close-on-exec turned off execl("/bin/sh", "sh", "-c", command, (char *) NULL); _exit(EXIT_FAILURE); //child should die here, (normally execl will take care of this but it can fail) @@ -156,7 +157,7 @@ static inline void read_exec(const char *data, char *buf, const int size, const int length; length = fread(buf, 1, size, fp); - pclose(fp); + fclose(fp); buf[length] = '\0'; if (length > 0 && buf[length - 1] == '\n') { buf[length - 1] = '\0'; @@ -320,7 +321,7 @@ void print_execpi(struct text_object *obj, char *p, int p_max_size) ed->buffer = malloc(text_buffer_size); length = fread(ed->buffer, 1, text_buffer_size, fp); - pclose(fp); + fclose(fp); output = ed->buffer; output[length] = '\0'; -- 1.7.2.3 |
From: Nikos N. <nt...@cs...> - 2010-12-05 04:25:57
|
Signed-off-by: Nikos Ntarmos <nt...@cs...> --- configure.ac.in | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac.in b/configure.ac.in index fad7eb1..87f4126 100644 --- a/configure.ac.in +++ b/configure.ac.in @@ -238,7 +238,7 @@ AC_ARG_ENABLE([apcupsd], [want_apcupsd="$enableval"], [want_apcupsd=yes]) if test x$want_apcupsd = xyes; then - if test x"$uname" != xLinux; then + if test x"$uname" != xLinux -a x"$uname" != xFreeBSD; then AC_MSG_NOTICE([apcupsd not supported on $uname... disabling]) want_apcupsd="not supported on $uname" else @@ -258,7 +258,7 @@ AC_ARG_ENABLE([iostats], [want_iostats="$enableval"], [want_iostats=yes]) if test x$want_iostats = xyes; then - if test x"$uname" != xLinux; then + if test x"$uname" != xLinux -a x"$uname" != xFreeBSD; then AC_MSG_NOTICE([iostats not supported on $uname... disabling]) want_iostats="not supported on $uname" else -- 1.7.2.3 |
From: Nikos N. <nt...@cs...> - 2010-12-05 04:25:54
|
Signed-off-by: Nikos Ntarmos <nt...@cs...> --- src/xmms2.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/xmms2.c b/src/xmms2.c index 521bffa..edcded7 100644 --- a/src/xmms2.c +++ b/src/xmms2.c @@ -223,7 +223,7 @@ int handle_playback_state_change(xmmsv_t *value, void *p) break; case XMMS_PLAYBACK_STATUS_STOP: strncpy(ptr->xmms2.status, "Stopped", text_buffer_size - 1); - ptr->xmms2.elapsed = ptr->xmms2.progress = ptr->xmms2.percent = 0; + ptr->xmms2.elapsed = ptr->xmms2.progress = 0; break; default: strncpy(ptr->xmms2.status, "Unknown", text_buffer_size - 1); -- 1.7.2.3 |
From: Brenden M. <br...@di...> - 2010-10-05 22:51:37
|
Hi Folks, Conky 1.8.1 has been released. This is primarily a maintenance release, with a few important bug fixes. Please see the changelog at http://conky.sourceforge.net/changelog.html for details. Regards, Brenden |
From: Kim H. <ki...@ho...> - 2010-08-27 06:19:31
|
On 2010-08-27 05:27, Tommy wrote: > I was messing with the battery features of Conky, and I was wondering if > there was another way to get the status. I'd like to show more than the > "C" or "D" for the battery status. I've been using this for a few years (all on one line): ${execi 60 if grep -qi discharging /sys/class/power_supply/BAT0/status; then echo "Running"; else echo "Charging"; fi} time: ${alignr}${battery_time}${if_empty $battery_time}Battery full${endif} I know it's not really integrated into Conky, but it works. - Kim |
From: Tommy <sox...@gm...> - 2010-08-27 02:27:29
|
I was messing with the battery features of Conky, and I was wondering if there was another way to get the status. I'd like to show more than the "C" or "D" for the battery status. For example, I found the status of my battery (it currently says "charging" and it is, in fact, charging), in this file: /sys/class/power_supply/ACAD/device/power_supply/ACAD/subsystem/BAT0/status I'm not sure if this file/directory exists in several Linux distros. I am using Linux Mint 8. I'm also not sure if there is a shorter directory in which to find this file, but I was wondering if there was already a way to print the full word (IE. "charging", "discharging", etc.), or if a way to do so could be implemented otherwise. |
From: Nikolas G. <ni...@ga...> - 2010-06-07 08:00:21
|
Thanks for the patch, I made a couple of minor changes and added it to the master branch (see http://git.omp.am/?p=conky.git;a=commit;h=6ccde5e7e72d07605743a540556d27c66292e3b7 ) On Mon, Jun 7, 2010 at 4:04 AM, Timothy Ball <ti...@gm...> wrote: > 0001-add-wireless_channel-option.patch > 1st patch is for git trunk > > conky-wireless_channel.diff > 2nd patch is for whatever ubuntu is using (1.7.2) > > these patches add a missing ${wireless_channel net} option. > > pretty simple, really. the xml doc/ stuff was rather confusing so i > didn't patch those. > > --timball > > -- > GPG key available on pgpkeys.mit.edu > pub 1024D/511FBD54 2001-07-23 Timothy Lu Hu Ball <ti...@tu...> > Key fingerprint = B579 29B0 F6C8 C7AA 3840 E053 FE02 BB97 511F BD54 > > ------------------------------------------------------------------------------ > ThinkGeek and WIRED's GeekDad team up for the Ultimate > GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the > lucky parental unit. See the prize list and enter to win: > http://p.sf.net/sfu/thinkgeek-promo > _______________________________________________ > Conky-development mailing list > Con...@li... > https://lists.sourceforge.net/lists/listinfo/conky-development > > |
From: Timothy B. <ti...@gm...> - 2010-06-07 02:04:07
|
0001-add-wireless_channel-option.patch 1st patch is for git trunk conky-wireless_channel.diff 2nd patch is for whatever ubuntu is using (1.7.2) these patches add a missing ${wireless_channel net} option. pretty simple, really. the xml doc/ stuff was rather confusing so i didn't patch those. --timball -- GPG key available on pgpkeys.mit.edu pub 1024D/511FBD54 2001-07-23 Timothy Lu Hu Ball <ti...@tu...> Key fingerprint = B579 29B0 F6C8 C7AA 3840 E053 FE02 BB97 511F BD54 |
From: Alexander G. <ag...@zn...> - 2010-05-28 15:33:49
|
${top}, ${top_mem} and ${top_time} are now recognized as variables. The parts of code doing this were in a #ifdef __linux__. The total CPU time of processes (${top} with "time" argument) is now printable, and ${top_time} works. Signed-off-by: Alexander Graf <ag...@zn...> --- src/conky.c | 4 ---- src/core.c | 15 ++++++++------- src/freebsd.c | 42 +++++++++++++++++++++++++++++++----------- 3 files changed, 39 insertions(+), 22 deletions(-) diff --git a/src/conky.c b/src/conky.c index f52d7b8..a289172 100644 --- a/src/conky.c +++ b/src/conky.c @@ -2180,7 +2180,6 @@ void generate_text_internal(char *p, int p_max_size, /* we have four different types of top (top, top_mem, * top_time and top_io). To avoid having almost-same code four * times, we have this special handler. */ -#ifdef __linux__ break; case OBJ_top: case OBJ_top_mem: @@ -2189,7 +2188,6 @@ void generate_text_internal(char *p, int p_max_size, case OBJ_top_io: #endif print_top(obj, p, p_max_size); -#endif /* __linux__ */ OBJ(tail) { print_tailhead("tail", obj, p, p_max_size); } @@ -4226,9 +4224,7 @@ static void set_default_configurations(void) #ifdef IOSTATS top_io = 0; #endif -#ifdef __linux__ top_running = 0; -#endif #ifdef MPD mpd_env_host = getenv("MPD_HOST"); mpd_env_port = getenv("MPD_PORT"); diff --git a/src/core.c b/src/core.c index 90ed09b..e0e7218 100644 --- a/src/core.c +++ b/src/core.c @@ -541,6 +541,11 @@ struct text_object *construct_text_object(const char *s, const char *arg, long parse_platform_sensor(obj, arg); END OBJ_ARG(hwmon, 0, "hwmon needs argumanets") parse_hwmon_sensor(obj, arg); + END OBJ(addr, &update_net_stats) + parse_net_stat_arg(obj, arg, free_at_crash); + END OBJ(addrs, &update_net_stats) + parse_net_stat_arg(obj, arg, free_at_crash); +#endif /* __linux__ */ END /* we have four different types of top (top, top_mem, top_time and top_io). To * avoid having almost-same code four times, we have this special @@ -551,12 +556,8 @@ struct text_object *construct_text_object(const char *s, const char *arg, long if (!parse_top_args(s, arg, obj)) { return NULL; } - } else OBJ(addr, &update_net_stats) - parse_net_stat_arg(obj, arg, free_at_crash); - END OBJ(addrs, &update_net_stats) - parse_net_stat_arg(obj, arg, free_at_crash); -#endif /* __linux__ */ - END OBJ_ARG(tail, 0, "tail needs arguments") + } else + OBJ_ARG(tail, 0, "tail needs arguments") init_tailhead("tail", arg, obj, free_at_crash); END OBJ_ARG(head, 0, "head needs arguments") init_tailhead("head", arg, obj, free_at_crash); @@ -786,9 +787,9 @@ struct text_object *construct_text_object(const char *s, const char *arg, long obj->sub = malloc(sizeof(struct text_object)); extract_variable_text_internal(obj->sub, arg); END OBJ(processes, &update_total_processes) -#ifdef __linux__ END OBJ(running_processes, &update_top) top_running = 1; +#ifdef __linux__ END OBJ(threads, &update_threads) END OBJ(running_threads, &update_stat) #else diff --git a/src/freebsd.c b/src/freebsd.c index 368c05a..a8cd8b1 100644 --- a/src/freebsd.c +++ b/src/freebsd.c @@ -67,7 +67,7 @@ #endif __attribute__((gnu_inline)) inline void -proc_find_top(struct process **cpu, struct process **mem); +proc_find_top(struct process **cpu, struct process **mem, struct process **time); static short cpu_setup = 0; @@ -590,7 +590,7 @@ char get_freq(char *p_client_buffer, size_t client_buffer_size, const char *p_fo int update_top(void) { - proc_find_top(info.cpu, info.memu); + proc_find_top(info.cpu, info.memu, info.time); return 0; } @@ -726,8 +726,15 @@ int comparemem(const void *a, const void *b) } } +int comparetime(const void *va, const void *vb) +{ + struct process *a = (struct process *)va, *b = (struct process *)vb; + + return b->total_cpu_time - a->total_cpu_time; +} + __attribute__((gnu_inline)) inline void -proc_find_top(struct process **cpu, struct process **mem) +proc_find_top(struct process **cpu, struct process **mem, struct process **time) { struct kinfo_proc *p; int n_processes; @@ -751,6 +758,9 @@ proc_find_top(struct process **cpu, struct process **mem) processes[j].amount = 100.0 * p[i].ki_pctcpu / FSCALE; processes[j].vsize = p[i].ki_size; processes[j].rss = (p[i].ki_rssize * getpagesize()); + /* ki_runtime is in microseconds, total_cpu_time in centiseconds. + * Therefore we divide by 10000. */ + processes[j].total_cpu_time = p[i].ki_runtime / 10000; j++; } } @@ -760,11 +770,8 @@ proc_find_top(struct process **cpu, struct process **mem) struct process *tmp, *ttmp; tmp = malloc(sizeof(struct process)); - tmp->pid = processes[i].pid; - tmp->amount = processes[i].amount; + memcpy(tmp, &processes[i], sizeof(struct process)); tmp->name = strndup(processes[i].name, text_buffer_size); - tmp->rss = processes[i].rss; - tmp->vsize = processes[i].vsize; ttmp = mem[i]; mem[i] = tmp; @@ -779,11 +786,8 @@ proc_find_top(struct process **cpu, struct process **mem) struct process *tmp, *ttmp; tmp = malloc(sizeof(struct process)); - tmp->pid = processes[i].pid; - tmp->amount = processes[i].amount; + memcpy(tmp, &processes[i], sizeof(struct process)); tmp->name = strndup(processes[i].name, text_buffer_size); - tmp->rss = processes[i].rss; - tmp->vsize = processes[i].vsize; ttmp = cpu[i]; cpu[i] = tmp; @@ -793,6 +797,22 @@ proc_find_top(struct process **cpu, struct process **mem) } } + qsort(processes, j - 1, sizeof(struct process), comparetime); + for (i = 0; i < 10 && i < n_processes; i++) { + struct process *tmp, *ttmp; + + tmp = malloc(sizeof(struct process)); + memcpy(tmp, &processes[i], sizeof(struct process)); + tmp->name = strndup(processes[i].name, text_buffer_size); + + ttmp = time[i]; + time[i] = tmp; + if (ttmp != NULL) { + free(ttmp->name); + free(ttmp); + } + } + #if defined(FREEBSD_DEBUG) printf("=====\nmem\n"); for (i = 0; i < 10; i++) { -- 1.7.1 |
From: Alexander G. <ag...@zn...> - 2010-05-28 15:01:29
|
Makefile.am: top.c was enlisted as Linux-only source, though it is required for conky on every operating system. conky.[ch]: top_running definition was inside #ifdef __linux__, though required by top.c on every operating system. freebsd.c: Change return type of update_*() to int, as required by common.h; remove free_all_processes() as it is defined by top.c. The changes done to freebsd.c must be done to netbsd.c and openbsd.c, too. I did not do it as I have no opportunity to test conky under NetBSD or OpenBSD. Signed-off-by: Alexander Graf <ag...@zn...> --- src/Makefile.am | 4 ++-- src/conky.c | 2 -- src/conky.h | 2 -- src/freebsd.c | 41 ++++++++++++++++++++++++----------------- 4 files changed, 26 insertions(+), 23 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 4fb6a58..8e1b06c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -56,7 +56,7 @@ mandatory_sources = colours.c colours.h combine.c combine.h common.c common.h \ mboxscan.h read_tcp.c read_tcp.h scroll.c scroll.h specials.c \ specials.h tailhead.c tailhead.h temphelper.c temphelper.h \ text_object.c text_object.h timeinfo.c timeinfo.h algebra.c \ - algebra.h proc.c proc.h user.c user.h + algebra.h proc.c proc.h user.c user.h top.c top.h # source files only needed when the apropriate option is enabled audacious = audacious.c audacious.h @@ -65,7 +65,7 @@ ibm = ibm.c ibm.h smapi.c smapi.h mpd = mpd.c mpd.h libmpdclient.c libmpdclient.h moc = moc.c moc.h xmms2 = xmms2.c xmms2.h -linux = linux.c linux.h top.c top.h users.c sony.c sony.h i8k.c i8k.h +linux = linux.c linux.h users.c sony.c sony.h i8k.c i8k.h solaris = solaris.c freebsd = freebsd.c freebsd.h netbsd = netbsd.c netbsd.h diff --git a/src/conky.c b/src/conky.c index 2ae447e..f52d7b8 100644 --- a/src/conky.c +++ b/src/conky.c @@ -166,9 +166,7 @@ int top_cpu, top_mem, top_time; #ifdef IOSTATS int top_io; #endif -#ifdef __linux__ int top_running; -#endif int output_methods; static int extra_newline; enum x_initialiser_state x_initialised = NO; diff --git a/src/conky.h b/src/conky.h index 84f64c0..30e73a0 100644 --- a/src/conky.h +++ b/src/conky.h @@ -296,9 +296,7 @@ extern int top_cpu, top_mem, top_time; #ifdef IOSTATS extern int top_io; #endif -#ifdef __linux__ extern int top_running; -#endif /* defined in conky.c, needed by top.c */ extern int cpu_separate; diff --git a/src/freebsd.c b/src/freebsd.c index a8a7d74..368c05a 100644 --- a/src/freebsd.c +++ b/src/freebsd.c @@ -118,7 +118,7 @@ void prepare_update(void) { } -void update_uptime(void) +int update_uptime(void) { int mib[2] = { CTL_KERN, KERN_BOOTTIME }; struct timeval boottime; @@ -133,6 +133,8 @@ void update_uptime(void) fprintf(stderr, "Could not get uptime\n"); info.uptime = 0; } + + return 0; } int check_mount(char *s) @@ -150,7 +152,7 @@ int check_mount(char *s) return 0; } -void update_meminfo(void) +int update_meminfo(void) { u_int total_pages, inactive_pages, free_pages; unsigned long swap_avail, swap_free; @@ -182,9 +184,11 @@ void update_meminfo(void) info.swap = 0; info.swapfree = 0; } + + return 0; } -void update_net_stats(void) +int update_net_stats(void) { struct net_stat *ns; double delta; @@ -195,11 +199,11 @@ void update_net_stats(void) /* get delta */ delta = current_update_time - last_update_time; if (delta <= 0.0001) { - return; + return 0; } if (getifaddrs(&ifap) < 0) { - return; + return 0; } for (ifa = ifap; ifa; ifa = ifa->ifa_next) { @@ -255,18 +259,20 @@ void update_net_stats(void) } freeifaddrs(ifap); + return 0; } -void update_total_processes(void) +int update_total_processes(void) { int n_processes; kvm_getprocs(kd, KERN_PROC_ALL, 0, &n_processes); info.procs = n_processes; + return 0; } -void update_running_processes(void) +int update_running_processes(void) { struct kinfo_proc *p; int n_processes; @@ -284,6 +290,7 @@ void update_running_processes(void) } info.run_procs = cnt; + return 0; } void get_cpu_count(void) @@ -309,7 +316,7 @@ struct cpu_info { long oldused; }; -void update_cpu_usage(void) +int update_cpu_usage(void) { int i, j = 0; long used, total; @@ -387,9 +394,10 @@ void update_cpu_usage(void) } free(cp_time); + return 0; } -void update_load_average(void) +int update_load_average(void) { double v[3]; @@ -398,6 +406,8 @@ void update_load_average(void) info.loadavg[0] = (double) v[0]; info.loadavg[1] = (double) v[1]; info.loadavg[2] = (double) v[2]; + + return 0; } double get_acpi_temperature(int fd) @@ -578,9 +588,10 @@ char get_freq(char *p_client_buffer, size_t client_buffer_size, const char *p_fo return 1; } -void update_top(void) +int update_top(void) { proc_find_top(info.cpu, info.memu); + return 0; } #if 0 @@ -638,7 +649,7 @@ cleanup: } #endif -void update_diskio(void) +int update_diskio(void) { int devs_count, num_selected, num_selections, dn; struct device_selection *dev_select = NULL; @@ -656,7 +667,7 @@ void update_diskio(void) if (devstat_getdevs(NULL, &statinfo_cur) < 0) { free(statinfo_cur.dinfo); - return; + return 0; } devs_count = statinfo_cur.dinfo->numdevs; @@ -688,6 +699,7 @@ void update_diskio(void) } free(statinfo_cur.dinfo); + return 0; } /* While topless is obviously better, top is also not bad. */ @@ -954,8 +966,3 @@ int get_entropy_poolsize(unsigned int *val) (void)val; return 1; } - -/* empty stub so conky links */ -void free_all_processes(void) -{ -} -- 1.7.1 |
From: Alexander G. <ag...@zn...> - 2010-05-24 12:45:47
|
Last patch removed a needed strndup(). Signed-off-by: Alexander Graf <ag...@zn...> --- src/freebsd.cc | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/src/freebsd.cc b/src/freebsd.cc index 5cae8f6..318ac3e 100644 --- a/src/freebsd.cc +++ b/src/freebsd.cc @@ -778,6 +778,7 @@ proc_find_top(struct process **cpu, struct process **mem, struct process **time) tmp = (process *) malloc(sizeof(struct process)); memcpy(tmp, &processes[i], sizeof(struct process)); + tmp->name = strndup(processes[i].name, text_buffer_size); ttmp = mem[i]; mem[i] = tmp; @@ -793,6 +794,7 @@ proc_find_top(struct process **cpu, struct process **mem, struct process **time) tmp = (process *) malloc(sizeof(struct process)); memcpy(tmp, &processes[i], sizeof(struct process)); + tmp->name = strndup(processes[i].name, text_buffer_size); ttmp = cpu[i]; cpu[i] = tmp; @@ -808,6 +810,7 @@ proc_find_top(struct process **cpu, struct process **mem, struct process **time) tmp = (process *) malloc(sizeof(struct process)); memcpy(tmp, &processes[i], sizeof(struct process)); + tmp->name = strndup(processes[i].name, text_buffer_size); ttmp = time[i]; time[i] = tmp; -- 1.7.1 |
From: Alexander G. <ag...@zn...> - 2010-05-23 21:48:57
|
- Displaying of CPU time of the processes now works - ${top_time} (sorting by CPU time) works - Using memcpy() instead of many sequential assignments (more clear, less lines, maybe faster, less effort to change something) Signed-off-by: Alexander Graf <ag...@zn...> --- src/freebsd.cc | 43 ++++++++++++++++++++++++++++++------------- 1 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/freebsd.cc b/src/freebsd.cc index 59d96d9..5cae8f6 100644 --- a/src/freebsd.cc +++ b/src/freebsd.cc @@ -70,7 +70,7 @@ kvm_t *kd; __attribute__((gnu_inline)) inline void -proc_find_top(struct process **cpu, struct process **mem); +proc_find_top(struct process **cpu, struct process **mem, struct process **time); static short cpu_setup = 0; @@ -597,7 +597,7 @@ char get_freq(char *p_client_buffer, size_t client_buffer_size, const char *p_fo int update_top(void) { - proc_find_top(info.cpu, info.memu); + proc_find_top(info.cpu, info.memu, info.time); return 0; } @@ -733,8 +733,15 @@ int comparemem(const void *a, const void *b) } } +int comparetime(const void *va, const void *vb) +{ + struct process *a = (struct process *)va, *b = (struct process *)vb; + + return b->total_cpu_time - a->total_cpu_time; +} + __attribute__((gnu_inline)) inline void -proc_find_top(struct process **cpu, struct process **mem) +proc_find_top(struct process **cpu, struct process **mem, struct process **time) { struct kinfo_proc *p; int n_processes; @@ -758,6 +765,9 @@ proc_find_top(struct process **cpu, struct process **mem) processes[j].amount = 100.0 * p[i].ki_pctcpu / FSCALE; processes[j].vsize = p[i].ki_size; processes[j].rss = (p[i].ki_rssize * getpagesize()); + /* ki_runtime is in microseconds, total_cpu_time in centiseconds. + * Therefore we divide by 10000. */ + processes[j].total_cpu_time = p[i].ki_runtime / 10000; j++; } } @@ -767,11 +777,7 @@ proc_find_top(struct process **cpu, struct process **mem) struct process *tmp, *ttmp; tmp = (process *) malloc(sizeof(struct process)); - tmp->pid = processes[i].pid; - tmp->amount = processes[i].amount; - tmp->name = strndup(processes[i].name, text_buffer_size); - tmp->rss = processes[i].rss; - tmp->vsize = processes[i].vsize; + memcpy(tmp, &processes[i], sizeof(struct process)); ttmp = mem[i]; mem[i] = tmp; @@ -786,11 +792,7 @@ proc_find_top(struct process **cpu, struct process **mem) struct process *tmp, *ttmp; tmp = (process *) malloc(sizeof(struct process)); - tmp->pid = processes[i].pid; - tmp->amount = processes[i].amount; - tmp->name = strndup(processes[i].name, text_buffer_size); - tmp->rss = processes[i].rss; - tmp->vsize = processes[i].vsize; + memcpy(tmp, &processes[i], sizeof(struct process)); ttmp = cpu[i]; cpu[i] = tmp; @@ -800,6 +802,21 @@ proc_find_top(struct process **cpu, struct process **mem) } } + qsort(processes, j - 1, sizeof(struct process), comparetime); + for (i = 0; i < 10 && i < n_processes; i++) { + struct process *tmp, *ttmp; + + tmp = (process *) malloc(sizeof(struct process)); + memcpy(tmp, &processes[i], sizeof(struct process)); + + ttmp = time[i]; + time[i] = tmp; + if (ttmp != NULL) { + free(ttmp->name); + free(ttmp); + } + } + #if defined(FREEBSD_DEBUG) printf("=====\nmem\n"); for (i = 0; i < 10; i++) { -- 1.7.1 |
From: Pavel L. <pa...@ce...> - 2010-05-23 20:20:10
|
I can't test this, but it looks reasonable, so I applied it. Thanks for the patches. peace |
From: Alexander G. <ag...@zn...> - 2010-05-23 17:00:33
|
It was inside #ifdef __linux__, though it is not Linux specific. Signed-off-by: Alexander Graf <ag...@zn...> --- src/conky.cc | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) diff --git a/src/conky.cc b/src/conky.cc index 417690c..c2b65ed 100644 --- a/src/conky.cc +++ b/src/conky.cc @@ -3398,12 +3398,10 @@ char load_config_file(const char *f) CONF("no_buffers") { no_buffers = string_to_bool(value); } -#ifdef __linux__ CONF("top_name_width") { if (set_top_name_width(value)) CONF_ERR; } -#endif /* __linux__ */ CONF("top_cpu_separate") { cpu_separate = string_to_bool(value); } -- 1.7.1 |
From: Alexander G. <ag...@zn...> - 2010-05-23 17:00:29
|
This allows compilation under FreeBSD without errors. read_tcpip.cc: Avoid using of SOCK_NONBLOCK argument for socket(). SOCK_NONBLOCK is Linux-specific and its use was substituted with a fcntl() call after socket(). freebsd.cc: Change return type of update_*() to int, as required by common.h. Signed-off-by: Alexander Graf <ag...@zn...> --- src/freebsd.cc | 36 ++++++++++++++++++++++++------------ src/read_tcpip.cc | 6 +++++- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/freebsd.cc b/src/freebsd.cc index dfe18b7..59d96d9 100644 --- a/src/freebsd.cc +++ b/src/freebsd.cc @@ -121,7 +121,7 @@ void prepare_update(void) { } -void update_uptime(void) +int update_uptime(void) { int mib[2] = { CTL_KERN, KERN_BOOTTIME }; struct timeval boottime; @@ -136,6 +136,8 @@ void update_uptime(void) fprintf(stderr, "Could not get uptime\n"); info.uptime = 0; } + + return 0; } int check_mount(struct text_object *obj) @@ -156,7 +158,7 @@ int check_mount(struct text_object *obj) return 0; } -void update_meminfo(void) +int update_meminfo(void) { u_int total_pages, inactive_pages, free_pages; unsigned long swap_avail, swap_free; @@ -189,9 +191,11 @@ void update_meminfo(void) info.swap = 0; info.swapfree = 0; } + + return 0; } -void update_net_stats(void) +int update_net_stats(void) { struct net_stat *ns; double delta; @@ -202,11 +206,11 @@ void update_net_stats(void) /* get delta */ delta = current_update_time - last_update_time; if (delta <= 0.0001) { - return; + return 0; } if (getifaddrs(&ifap) < 0) { - return; + return 0; } for (ifa = ifap; ifa; ifa = ifa->ifa_next) { @@ -262,18 +266,20 @@ void update_net_stats(void) } freeifaddrs(ifap); + return 0; } -void update_total_processes(void) +int update_total_processes(void) { int n_processes; kvm_getprocs(kd, KERN_PROC_ALL, 0, &n_processes); info.procs = n_processes; + return 0; } -void update_running_processes(void) +int update_running_processes(void) { struct kinfo_proc *p; int n_processes; @@ -291,6 +297,7 @@ void update_running_processes(void) } info.run_procs = cnt; + return 0; } void get_cpu_count(void) @@ -316,7 +323,7 @@ struct cpu_info { long oldused; }; -void update_cpu_usage(void) +int update_cpu_usage(void) { int i, j = 0; long used, total; @@ -394,9 +401,10 @@ void update_cpu_usage(void) } free(cp_time); + return 0; } -void update_load_average(void) +int update_load_average(void) { double v[3]; @@ -405,6 +413,8 @@ void update_load_average(void) info.loadavg[0] = (double) v[0]; info.loadavg[1] = (double) v[1]; info.loadavg[2] = (double) v[2]; + + return 0; } double get_acpi_temperature(int fd) @@ -585,9 +595,10 @@ char get_freq(char *p_client_buffer, size_t client_buffer_size, const char *p_fo return 1; } -void update_top(void) +int update_top(void) { proc_find_top(info.cpu, info.memu); + return 0; } #if 0 @@ -645,7 +656,7 @@ cleanup: } #endif -void update_diskio(void) +int update_diskio(void) { int devs_count, num_selected, num_selections, dn; struct device_selection *dev_select = NULL; @@ -663,7 +674,7 @@ void update_diskio(void) if (devstat_getdevs(NULL, &statinfo_cur) < 0) { free(statinfo_cur.dinfo); - return; + return 0; } devs_count = statinfo_cur.dinfo->numdevs; @@ -695,6 +706,7 @@ void update_diskio(void) } free(statinfo_cur.dinfo); + return 0; } /* While topless is obviously better, top is also not bad. */ diff --git a/src/read_tcpip.cc b/src/read_tcpip.cc index 08c7b0b..d6e1ac1 100644 --- a/src/read_tcpip.cc +++ b/src/read_tcpip.cc @@ -35,6 +35,8 @@ #include <stdlib.h> #include <string> #include <unistd.h> +#include <errno.h> +#include <fcntl.h> #include <netinet/in.h> #include <sys/time.h> #include <cinttypes> @@ -104,11 +106,13 @@ void print_tcp_ping(struct text_object *obj, char *p, int p_max_size) struct timeval tv1, tv2, timeout; struct sockaddr_in *addr = (struct sockaddr_in *) obj->data.opaque; int addrlen = sizeof(struct sockaddr); - int sock = socket(addr->sin_family, SOCK_STREAM | SOCK_NONBLOCK, IPPROTO_TCP); + int sock = socket(addr->sin_family, SOCK_STREAM, IPPROTO_TCP); unsigned long long usecdiff; fd_set writefds; if(sock != -1) { + fcntl(sock, F_SETFL, O_NONBLOCK | fcntl(sock, F_GETFL)); + FD_ZERO(&writefds); FD_SET(sock, &writefds); #define TCP_PING_TIMEOUT 10 -- 1.7.1 |
From: Krzysztof <ri...@gm...> - 2010-05-11 14:43:28
|
One other thing... Under kde4 conky crashes a lot. At first I thought it was because of "own_window_type desktop" setting, as it crashed when I even clicked on desktop. But after setting to normal it still crashes randomly. Maybe even word "crash" isn't correct. Conky process still seems to be running, but conky itself is nowhere to be seen. Also mpd support doesn't seem to work, I keep getting (null) instead of song title, artist, etc. Best regards! -- Krzysztof Rygielski Registered Linux User: #455470 http://riggy.pl | http://krzysztof-rygielski.pl |
From: Krzysztof <ri...@gm...> - 2010-05-11 13:56:40
|
Hello, Today I started testing conky 1.8 and I must say, REAL transparency is just great! However there is one little issue... I'm using images and after I made my conky transparent, those images look a little weird. Just as if some of transparency effect applied to them. It would be nice if it didn't happen. Any possible fix or workaround is available? Best regards! -- Krzysztof Rygielski Registered Linux User: #455470 http://riggy.pl | http://krzysztof-rygielski.pl |
From: Roland K. <de...@gm...> - 2010-05-04 08:32:48
|
Hi, I tried to clone the conky repo as advertised on the sf page (git clone git://git.omp.am/conky.git), but it did not work: rck@archbox -> git clone git://git.omp.am/conky.git Initialized empty Git repository in /home/rck/src/conky/.git/ git.omp.am[0: 216.94.9.117]: errno=Connection refused git.omp.am[0: 216.94.9.116]: errno=Connection refused git.omp.am[0: 216.94.9.115]: errno=Connection refused git.omp.am[0: 216.94.9.114]: errno=Connection refused fatal: unable to connect a socket (Connection refused) the same problem occurred on one of my remote machines, therefore I think it is indeed a problem with your git server. Please fix it, I promise I will submit a patch for the docu in return ;) regards, rck |
From: Brenden M. <br...@di...> - 2010-03-30 18:21:40
|
Hey folks, Apologies for the length of time it took me to get around to this, but I have released Conky 1.8.0. There is a wiki page set up with a summary of the changes at: http://wiki.conky.be/index.php/1.8.0_tour You can fetch a copy of the source from: https://sourceforge.net/projects/conky/files/conky/ Regards, Brenden |
From: Brenden M. <br...@di...> - 2010-03-16 16:46:24
|
On Sat, Mar 13, 2010 at 7:55 AM, Cesare Tirabassi < ces...@gm...> wrote: > All, > > I've got a couple of deadlines coming for which I need to do some > planning. > I obviously want both Debian and Ubuntu to have the latest > and greatest conky; Ubuntu will freeze on April 15th, and most likely > Debian will do around that time too (I can't give any firm date for > Debian as things are not yet cast in stone, April should be a good > target). > So, what is the release planning for conky? > It doesn't seem like there is any showstopper bug: > > > http://sourceforge.net/tracker/?limit=25&func=&group_id=143975&atid=757308&assignee=&status=&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter > > C. Hi Cesare, I'll need to make some time (hopefully this week?) to do a 1.8.0 release. I was going to do it the other week but I found that it wasn't even building properly at the time so I held off. After 1.8.0 I'll do 1.8.1 shortly thereafter, the goal being bug fixes/stability. Regards, Brenden |
From: Cesare T. <ces...@gm...> - 2010-03-13 14:56:52
|
All, I've got a couple of deadlines coming for which I need to do some planning. I obviously want both Debian and Ubuntu to have the latest and greatest conky; Ubuntu will freeze on April 15th, and most likely Debian will do around that time too (I can't give any firm date for Debian as things are not yet cast in stone, April should be a good target). So, what is the release planning for conky? It doesn't seem like there is any showstopper bug: http://sourceforge.net/tracker/?limit=25&func=&group_id=143975&atid=757308&assignee=&status=&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter C. |
From: Brenden M. <br...@di...> - 2010-01-24 18:29:41
|
Hey Folks, I have posted up a second release candidate for Conky 1.8.0. The feature tour page has been updated, but could still use some love (at http://wiki.conky.be/index.php/1.8.0_tour). BSD users/devs, please test this and report back on any issues so we can have a solid 1.8.0 release across all platforms. Regards, Brenden |
From: Brenden M. <br...@di...> - 2010-01-16 18:55:11
|
On Tue, Jan 12, 2010 at 9:34 AM, Dmitry Marakasov <am...@am...> wrote: > Hi! > > Here's a patch for $subj. > > - Adds per-core cpu load statistics in a style of how it's done for > linux. > - Removes some useless global variables > - Fixes cpu load calculation, as older one didn't count interrupt > time at all. > > Workes well on my FreeBSD-8.0 with 2core cpu and for at least 2 > more people > > http://people.freebsd.org/~amdmi3/patch-src-freebsd.c > > -- > Dmitry Marakasov . 55B5 0596 FF1E 8D84 5F56 9510 D35A 80DD F9D2 F77D > am...@am... ..: jabber: am...@ja... http://www.amdmi3.ru Thanks for the patch, it is now in the 1.8.1 branch. |
From: Dmitry M. <am...@am...> - 2010-01-12 18:11:53
|
Hi! Here's a patch for $subj. - Adds per-core cpu load statistics in a style of how it's done for linux. - Removes some useless global variables - Fixes cpu load calculation, as older one didn't count interrupt time at all. Workes well on my FreeBSD-8.0 with 2core cpu and for at least 2 more people http://people.freebsd.org/~amdmi3/patch-src-freebsd.c -- Dmitry Marakasov . 55B5 0596 FF1E 8D84 5F56 9510 D35A 80DD F9D2 F77D am...@am... ..: jabber: am...@ja... http://www.amdmi3.ru |