home *** CD-ROM | disk | FTP | other *** search
- /* History:
- 5/1/91 DJB baseline public domain
- */
-
- /*
-
- char *printrusage(ru) struct rusage *ru; returns a string representation
- of practically everything about ru. Not well defined.
-
- */
-
- #include <stdio.h>
- #include <strings.h>
- #include <sys/types.h>
- #include <sys/time.h>
- #include <sys/resource.h>
- #include "printrusage.h"
-
- static char result[500];
-
- #define hz 30 /*XXX*/
-
- char *printrusage(ru)
- struct rusage *ru;
- {
- char *t;
- long ticks;
-
- t = result;
- sprintf(t,"%d.%02.2du ",ru->ru_utime.tv_sec,ru->ru_utime.tv_usec/10000);
- t += strlen(t);
- sprintf(t,"%d.%02.2ds ",ru->ru_stime.tv_sec,ru->ru_stime.tv_usec/10000);
- t += strlen(t);
-
- /* XXX: ru_maxrss? ru_isrss? */
- /* XXX: maybe we should print total, not average, rss here? */
- ticks = hz * (ru->ru_utime.tv_sec + ru->ru_stime.tv_sec)
- + hz * (ru->ru_utime.tv_usec + ru->ru_stime.tv_usec) / 1000000;
- /* Note that most BSD code will dump if ticks == 0. */
- sprintf(t,"%ld+%ldk "
- ,!ticks ? 0 : (ru->ru_ixrss/ticks)
- ,!ticks ? 0 : (ru->ru_idrss/ticks)
- );
- t += strlen(t);
-
- sprintf(t,"%ld+%ldio ",ru->ru_inblock,ru->ru_oublock);
- t += strlen(t);
-
- /* XXX: ru_minflt? (``pr'') */
- sprintf(t,"%ldpf+%ldw ",ru->ru_majflt,ru->ru_nswap);
- t += strlen(t);
-
- /*
- sprintf(t,"%ld+%ldmsg ",ru->ru_msgsnd,ru->ru_msgrcv);
- t += strlen(t);
- */
-
- sprintf(t,"%ld+%ldcsw ",ru->ru_nvcsw,ru->ru_nivcsw);
- t += strlen(t);
-
- sprintf(t,"%ldsig",ru->ru_nsignals);
- t += strlen(t);
-
- return result;
- }
-