home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 3 / 3297 / printrusage.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-05-07  |  1.4 KB  |  66 lines

  1. /* History:
  2. 5/1/91 DJB baseline public domain
  3. */
  4.  
  5. /*
  6.  
  7. char *printrusage(ru) struct rusage *ru; returns a string representation
  8. of practically everything about ru. Not well defined.
  9.  
  10. */
  11.  
  12. #include <stdio.h>
  13. #include <strings.h>
  14. #include <sys/types.h>
  15. #include <sys/time.h>
  16. #include <sys/resource.h>
  17. #include "printrusage.h"
  18.  
  19. static char result[500];
  20.  
  21. #define hz 30 /*XXX*/
  22.  
  23. char *printrusage(ru)
  24. struct rusage *ru;
  25. {
  26.  char *t;
  27.  long ticks;
  28.  
  29.  t = result;
  30.  sprintf(t,"%d.%02.2du ",ru->ru_utime.tv_sec,ru->ru_utime.tv_usec/10000);
  31.  t += strlen(t);
  32.  sprintf(t,"%d.%02.2ds ",ru->ru_stime.tv_sec,ru->ru_stime.tv_usec/10000);
  33.  t += strlen(t);
  34.  
  35.  /* XXX: ru_maxrss? ru_isrss? */
  36.  /* XXX: maybe we should print total, not average, rss here? */
  37.  ticks = hz * (ru->ru_utime.tv_sec + ru->ru_stime.tv_sec)
  38.    + hz * (ru->ru_utime.tv_usec + ru->ru_stime.tv_usec) / 1000000;
  39.  /* Note that most BSD code will dump if ticks == 0. */
  40.  sprintf(t,"%ld+%ldk "
  41.    ,!ticks ? 0 : (ru->ru_ixrss/ticks)
  42.    ,!ticks ? 0 : (ru->ru_idrss/ticks)
  43.   );
  44.  t += strlen(t);
  45.  
  46.  sprintf(t,"%ld+%ldio ",ru->ru_inblock,ru->ru_oublock);
  47.  t += strlen(t);
  48.  
  49.  /* XXX: ru_minflt? (``pr'') */
  50.  sprintf(t,"%ldpf+%ldw ",ru->ru_majflt,ru->ru_nswap);
  51.  t += strlen(t);
  52.  
  53.  /*
  54.  sprintf(t,"%ld+%ldmsg ",ru->ru_msgsnd,ru->ru_msgrcv);
  55.  t += strlen(t);
  56.  */
  57.  
  58.  sprintf(t,"%ld+%ldcsw ",ru->ru_nvcsw,ru->ru_nivcsw);
  59.  t += strlen(t);
  60.  
  61.  sprintf(t,"%ldsig",ru->ru_nsignals);
  62.  t += strlen(t);
  63.  
  64.  return result;
  65. }
  66.