On Mon, 15 Mar 2004 20:36:31 +0000 ESR <[EMAIL PROTECTED]> babbled:
> Howdy Y'all,
>
> Heres a little patch against e16/epplets/E-MemWatch.c to make it work
> properly with 2.6 Kernels.
in cvs :)
> elemental0125
>
> --- E-MemWatch.c.~1.15.~ Wed Jan 5 16:24:00 2000
> +++ E-MemWatch.c Mon Mar 15 20:12:29 2004
> @@ -48,6 +48,7 @@
> Epplet_gadget close_button, mem_bar, swap_bar, mem_label, swap_label,
> title, cfg_button;
> int mem_val = 0, swap_val = 0;
> int show_title = 1;
> +int kernel_2_6 = 0;
>
> static void timer_cb(void *data);
> static void close_cb(void *data);
> @@ -58,7 +59,7 @@
> timer_cb(void *data) {
>
> char buff[1024];
> - unsigned long total, used, buffers, cached;
> + unsigned long total, used, buffers, cached, free;
>
> #ifdef HAVE_LIBGTOP
> int check=0;
> @@ -77,11 +78,33 @@
> D(("Failed to open /proc/meminfo -- %s\n", strerror(errno)));
> return;
> }
> - fgets(buff, sizeof(buff), fp); /* Ignore the first line */
> - fgets(buff, sizeof(buff), fp);
> - sscanf(buff, "%*s %lu %lu %*u %*u %lu %lu",
> - &total, &used, &buffers, &cached);
> -#endif
> +
> + if( kernel_2_6 ) {
> + fgets(buff, sizeof(buff), fp);
> + sscanf(buff, "%*s %lu", &total);
> + fgets(buff, sizeof(buff), fp);
> + sscanf(buff, "%*s %lu", &free);
> + fgets(buff, sizeof(buff), fp);
> + sscanf(buff, "%*s %lu", &buffers);
> + fgets(buff, sizeof(buff), fp);
> + sscanf(buff, "%*s %lu", &cached);
> +
> + total *= 1024;
> + free *= 1024;
> + buffers *= 1024;
> + cached *= 1024;
> + used = total - free;
> +
> + } else {
> +
> + fgets(buff, sizeof(buff), fp); /* Ignore the first line */
> + fgets(buff, sizeof(buff), fp);
> + sscanf(buff, "%*s %lu %lu %*u %*u %lu %lu",
> + &total, &used, &buffers, &cached);
> + }
> +
> +#endif /* HAVE_LIBGTOP */
> +
> used -= (buffers + cached);
> mem_val = (int) ((((float) used) / total) * 100.0);
> D(("%d = 100 * %lu / %lu\n", (100 * used) / total, used, total));
> @@ -107,11 +130,32 @@
> used=(unsigned long)swap.used;
> } while (swap.total==0 && swap.used==0 && check++<15);
> #else
> - fgets(buff, sizeof(buff), fp);
> - sscanf(buff, "%*s %lu %lu", &total, &used);
> +
> + if( kernel_2_6 ) {
> + fgets(buff, sizeof(buff), fp);
> + fgets(buff, sizeof(buff), fp);
> + fgets(buff, sizeof(buff), fp);
> + fgets(buff, sizeof(buff), fp);
> + fgets(buff, sizeof(buff), fp);
> + fgets(buff, sizeof(buff), fp);
> + fgets(buff, sizeof(buff), fp);
> + fgets(buff, sizeof(buff), fp);
> + sscanf(buff, "%*s %lu", &total);
> + fgets(buff, sizeof(buff), fp);
> + sscanf(buff, "%*s %lu", &free);;
> +
> + total *= 1024;
> + free *= 1024;
> + used = total - free;
> +
> + } else {
> +
> + fgets(buff, sizeof(buff), fp);
> + sscanf(buff, "%*s %lu %lu", &total, &used);
> + }
>
> fclose(fp);
> -#endif
> +#endif /* HAVE_LIBGTOP */
> swap_val = (int) ((((float) used) / total) * 100.0);
>
> /*printf ("Swap: %lu %lu %d%%\n", total, used, swap_val); */
> @@ -194,6 +238,27 @@
>
> int prio;
>
> +
> + /* check for Kernel 2.6 */
> + FILE *fp;
> + char version[8], buff[1024];
> +
> + if ((fp = fopen("/proc/version", "r")) == NULL) {
> + D(("Failed to open /proc/version -- %s\nWill assume not 2.6 kernel"
> + , strerror(errno)));
> + return;
> + }
> +
> + fgets(buff, sizeof(buff), fp);
> + sscanf(buff, "%*s %*s %s", version);
> +
> + if(version[2] == '6') {
> + kernel_2_6 = 1;
> + }
> +
> + close(fp);
> + /* end check for Kernel 2.6 */
> +
> atexit(Epplet_cleanup);
> prio = getpriority(PRIO_PROCESS, getpid());
> setpriority(PRIO_PROCESS, getpid(), prio + 10);
>
>
--
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler) [EMAIL PROTECTED]
熊耳 - 車君 (数田) [EMAIL PROTECTED]
Tokyo, Japan (東京 日本)
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
enlightenment-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel