[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,
- vm_size_t is unsigned, so libps should use unsigned ints.,
James A Morrison <=