home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 1 / 1816 / pmplib.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-12-28  |  920 b   |  54 lines

  1. #include <stdio.h>
  2. #include "pmplib.h"
  3. #ifdef PMPSIG
  4. #include <sys/time.h>
  5. #include <signal.h>
  6. int pmpsig = 0;
  7. #endif
  8.  
  9. static struct pmpcount *cur = (struct pmpcount *) 0;
  10.  
  11. void pmpregister(pmpc)
  12. struct pmpcount *pmpc;
  13. {
  14.  pmpc->prev = cur;
  15.  cur = pmpc;
  16. }
  17.  
  18. pmp(fn)
  19. char *fn;
  20. {
  21.  FILE *fi;
  22.  struct pmpcount *t;
  23.  
  24.  if ((fi = fopen(fn,"w")) == NULL)
  25.    return(-1);
  26.  for (t = cur;t;t = t->prev)
  27. #ifdef PMPSIG
  28.    (void) fprintf(fi,"%s %d: %d+%d\n",t->file,t->line,t->scount,t->tcount);
  29. #else
  30.    (void) fprintf(fi,"%s %d: %d\n",t->file,t->line,t->scount);
  31. #endif
  32.  (void) fclose(fi);
  33.  return(0);
  34. }
  35.  
  36. #ifdef PMPSIG
  37. pmpsighandle()
  38. {
  39.  pmpsig++;
  40. }
  41.  
  42. void pmpstartsig(us)
  43. int us;
  44. {
  45.  struct itimerval it;
  46.  
  47.  it.it_interval.tv_sec = it.it_value.tv_sec = us / 100000;
  48.  it.it_interval.tv_usec = it.it_value.tv_usec = us % 100000;
  49.  
  50.  (void) signal(SIGVTALRM,pmpsighandle);
  51.  (void) setitimer(ITIMER_VIRTUAL,&it,(struct itimerval *) 0);
  52. }
  53. #endif
  54.