From a369d2660c9e175fcd287cca9d2d93600632b89a Mon Sep 17 00:00:00 2001 From: Mark Wong Date: Tue, 26 Aug 2008 20:38:18 -0700 Subject: [PATCH] Returning proper values for utime and stime. --- pg_proctab.c | 15 +++++++++++++-- pg_proctab.sql.in | 4 ++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/pg_proctab.c b/pg_proctab.c index 5a45be2..fc99f87 100644 --- a/pg_proctab.c +++ b/pg_proctab.c @@ -204,8 +204,11 @@ Datum pg_proctab(PG_FUNCTION_ARGS) values[i_cminflt] = (char *) palloc((BIGINT_LEN + 1) * sizeof(char)); values[i_majflt] = (char *) palloc((BIGINT_LEN + 1) * sizeof(char)); values[i_cmajflt] = (char *) palloc((BIGINT_LEN + 1) * sizeof(char)); - values[i_utime] = (char *) palloc((BIGINT_LEN + 1) * sizeof(char)); - values[i_stime] = (char *) palloc((BIGINT_LEN + 1) * sizeof(char)); + + /* FIXME: Need to figure out correct length to hold a C double type. */ + values[i_utime] = (char *) palloc(32 * sizeof(char)); + values[i_stime] = (char *) palloc(32 * sizeof(char)); + values[i_cutime] = (char *) palloc((BIGINT_LEN + 1) * sizeof(char)); values[i_cstime] = (char *) palloc((BIGINT_LEN + 1) * sizeof(char)); values[i_priority] = (char *) palloc((BIGINT_LEN + 1) * sizeof(char)); @@ -370,10 +373,18 @@ Datum pg_proctab(PG_FUNCTION_ARGS) /* utime */ GET_NEXT_VALUE(p, q, values[i_utime], length, "utime not found", ' '); +#ifdef __linux__ + sprintf(values[i_utime], "%f", (double) atol(values[i_utime]) / + (double) HZ); +#endif /* __linux__ */ elog(DEBUG5, "pg_proctab: utime = %s", values[i_utime]); /* stime */ GET_NEXT_VALUE(p, q, values[i_stime], length, "stime not found", ' '); +#ifdef __linux__ + sprintf(values[i_stime], "%f", (double) atol(values[i_stime]) / + (double) HZ); +#endif /* __linux__ */ elog(DEBUG5, "pg_proctab: stime = %s", values[i_stime]); /* cutime */ diff --git a/pg_proctab.sql.in b/pg_proctab.sql.in index 8367e87..7a0ef68 100644 --- a/pg_proctab.sql.in +++ b/pg_proctab.sql.in @@ -14,8 +14,8 @@ CREATE OR REPLACE FUNCTION pg_proctab( OUT cminflt BIGINT, OUT majflt BIGINT, OUT cmajflt BIGINT, - OUT utime BIGINT, - OUT stime BIGINT, + OUT utime NUMERIC, + OUT stime NUMERIC, OUT cutime BIGINT, OUT cstime BIGINT, OUT priority BIGINT, -- 2.39.5