test-getrusage.c 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <sys/resource.h>
  4. int
  5. main (int argc, char **argv)
  6. {
  7. struct rusage buf;
  8. if (argc > 1)
  9. {
  10. system (argv[1]);
  11. if (getrusage (RUSAGE_CHILDREN, &buf ))
  12. {
  13. perror ("getrusage");
  14. return 1;
  15. }
  16. }
  17. else
  18. {
  19. if (getrusage (RUSAGE_SELF, &buf ))
  20. {
  21. perror ("getrusage");
  22. return 1;
  23. }
  24. }
  25. printf ("ru_utime = %ld.%06ld\n",
  26. buf.ru_utime.tv_sec, buf.ru_utime.tv_usec);
  27. printf ("ru_stime = %ld.%06ld\n",
  28. buf.ru_stime.tv_sec, buf.ru_stime.tv_usec);
  29. printf ("ru_maxrss = %ld\n", buf.ru_maxrss );
  30. printf ("ru_ixrss = %ld\n", buf.ru_ixrss );
  31. printf ("ru_idrss = %ld\n", buf.ru_idrss );
  32. printf ("ru_isrss = %ld\n", buf.ru_isrss );
  33. printf ("ru_minflt = %ld\n", buf.ru_minflt );
  34. printf ("ru_majflt = %ld\n", buf.ru_majflt );
  35. printf ("ru_nswap = %ld\n", buf.ru_nswap );
  36. printf ("ru_inblock = %ld\n", buf.ru_inblock );
  37. printf ("ru_oublock = %ld\n", buf.ru_oublock );
  38. printf ("ru_msgsnd = %ld\n", buf.ru_msgsnd );
  39. printf ("ru_msgrcv = %ld\n", buf.ru_msgrcv );
  40. printf ("ru_nsignals= %ld\n", buf.ru_nsignals );
  41. printf ("ru_nvcsw = %ld\n", buf.ru_nvcsw );
  42. printf ("ru_nivcsw = %ld\n", buf.ru_nivcsw );
  43. fprintf (stderr, "ru_utime ru_stime ru_minflt ru_nccsw ru_nivcsw\n");
  44. fprintf (stderr, "%ld.%06ld %ld.%06ld %5ld %5ld %5ld\n");
  45. return 0;
  46. }
  47. /* Codesnippet for debugging in random.c. */
  48. #if 0
  49. static void
  50. collect_rusage_stats (struct rusage *rb)
  51. {
  52. static int idx;
  53. static struct rusage buf[100];
  54. if (!rb)
  55. {
  56. int i;
  57. fprintf (stderr, "ru_utime ru_stime ru_minflt ru_nvcsw ru_nivcsw\n");
  58. for (i=0; i < idx; i++)
  59. fprintf (stderr, "%ld.%06ld %ld.%06ld %5ld %5ld %5ld\n",
  60. buf[i].ru_utime.tv_sec, buf[i].ru_utime.tv_usec,
  61. buf[i].ru_stime.tv_sec, buf[i].ru_stime.tv_usec,
  62. buf[i].ru_minflt,
  63. buf[i].ru_nvcsw,
  64. buf[i].ru_nivcsw);
  65. }
  66. else if (idx < DIM(buf))
  67. {
  68. buf[idx++] = *rb;
  69. }
  70. }
  71. #endif
  72. /*
  73. void
  74. _gcry_random_dump_stats()
  75. {
  76. @@ -233,8 +261,11 @@
  77. rndstats.naddbytes, rndstats.addbytes,
  78. rndstats.mixkey, rndstats.ngetbytes1, rndstats.getbytes1,
  79. rndstats.ngetbytes2, rndstats.getbytes2 );
  80. +
  81. + collect_rusage_stats (NULL);
  82. }
  83. ========
  84. getrusage (RUSAGE_SELF, &buf );
  85. + collect_rusage_stats (&buf);
  86. add_randomness( &buf, sizeof buf, 1 );
  87. memset( &buf, 0, sizeof buf );
  88. }
  89. */