bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

vm_size_t is unsigned, so libps should use unsigned ints.


From: James A Morrison
Subject: vm_size_t is unsigned, so libps should use unsigned ints.
Date: Sun, 26 May 2002 16:04:44 -0400 (EDT)

 Hi,

  I had noticed that ps and pptop would show the virtual size of some of my
processes to be some large negative number, which seems wrong, so here is the
patch I use to get only positive number for the resident size and the virtual
size.

James A. Morrison

2002-05-26  James A. Morrison  <ja2morri@uwaterloo.ca>

        * spec.c (sprint_frac_value): Added case for values between 1000 and
        1023.
        (sprint_frac_value): Make VALUE and FRAC unsigned ints.
        (ps_emit_nice_uint): Likewise.
        (ps_emit_nice_uint): Renamed ps_emit_nice_int.
        (ps_vsize_getter): Return an unsigned int instead of an int.
        (ps_rsize_getter): Likewise.
        (ps_get_rmem_frac): MEM_SIZE is now an unsigned int.
        (specs): Use ps_emit_nice_uint instead of ps_emit_nice_int.

Index: spec.c
===================================================================
RCS file: /cvsroot/hurd/hurd/libps/spec.c,v
retrieving revision 1.33
diff -u -r1.33 spec.c
--- spec.c      22 Dec 2001 20:32:57 -0000      1.33
+++ spec.c      26 May 2002 19:53:55 -0000
@@ -1,6 +1,6 @@
 /* Access, formatting, & comparison routines for printing process info.
 
-   Copyright (C) 1995,96,97,99,2001 Free Software Foundation, Inc.
+   Copyright (C) 1995,96,97,99,2001,02 Free Software Foundation, Inc.
 
    Written by Miles Bader <miles@gnu.org>
 
@@ -148,7 +148,7 @@
 const struct ps_getter ps_wait_getter =
 {"wait", PSTAT_THREAD_WAIT, ps_get_wait};
 
-static int
+static unsigned int
 ps_get_vsize (struct proc_stat *ps)
 {
   return proc_stat_task_basic_info (ps)->virtual_size;
@@ -156,7 +156,7 @@
 const struct ps_getter ps_vsize_getter =
 {"vsize", PSTAT_TASK_BASIC, (vf) ps_get_vsize};
 
-static int
+static unsigned int
 ps_get_rsize (struct proc_stat *ps)
 {
   return proc_stat_task_basic_info (ps)->resident_size;
@@ -232,7 +232,7 @@
 static float
 ps_get_rmem_frac (struct proc_stat *ps)
 {
-  static int mem_size = 0;
+  static unsigned int mem_size = 0;
 
   if (mem_size == 0)
     {
@@ -399,14 +399,16 @@
 
 int
 sprint_frac_value (char *buf,
-                 int value, int min_value_len,
-                 int frac, int frac_scale,
+                 unsigned int value, int min_value_len,
+                 unsigned int frac, int frac_scale,
                  int width)
 {
-  int value_len;
-  int frac_len;
+  int value_len = 0;
+  int frac_len = 0;
 
-  if (value >= 100)            /* the integer part */
+  if (value >= 1000)            /* the integer part */
+    value_len = 4;              /* values 1000-1023 */
+  if (value >= 100)            
     value_len = 3;
   else if (value >= 10)
     value_len = 2;
@@ -422,9 +424,9 @@
     frac /= 10;
 
   if (frac_len > 0)
-    sprintf (buf, "%d.%0*d", value, frac_len, frac);
+    sprintf (buf, "%u.%0*u", value, frac_len, frac);
   else
-    sprintf (buf, "%d", value);
+    sprintf (buf, "%u", value);
 
   return strlen (buf);
 }
@@ -449,13 +451,13 @@
 
 /* prints its value nicely */
 error_t
-ps_emit_nice_int (struct proc_stat *ps, struct ps_fmt_field *field,
-                 struct ps_stream *stream)
+ps_emit_nice_uint (struct proc_stat *ps, struct ps_fmt_field *field,
+                  struct ps_stream *stream)
 {
   char buf[20];
-  int value = FG (field, int)(ps);
+  unsigned int value = FG (field, unsigned int)(ps);
   char *sfx = " KMG";
-  int frac = 0;
+  unsigned int frac = 0;
 
   while (value >= 1024)
     {
@@ -1105,9 +1107,9 @@
   {"STime",    0,      -8, 2, 0,
    &ps_sys_time_getter,    ps_emit_seconds, ps_cmp_times,  0},
   {"VSize",    0,      -5, -1, 0,
-   &ps_vsize_getter,      ps_emit_nice_int,ps_cmp_ints,   0},
+   &ps_vsize_getter,      ps_emit_nice_uint,ps_cmp_ints,   0},
   {"RSize",    0,      -5, -1, 0,
-   &ps_rsize_getter,      ps_emit_nice_int,ps_cmp_ints,   0},
+   &ps_rsize_getter,      ps_emit_nice_uint,ps_cmp_ints,   0},
   {"Pri",      0,      -3, -1, 0,
    &ps_cur_priority_getter,ps_emit_priority,ps_cmp_ints,   ps_nominal_pri},
   {"BPri",     0,      -3, -1, 0,



reply via email to

[Prev in Thread] Current Thread [Next in Thread]