home *** CD-ROM | disk | FTP | other *** search
/ Beginning C++ Through Gam…rogramming (2nd Edition) / BCGP2E.ISO / bloodshed / devcpp-4.9.9.2_setup.exe / profil.h < prev    next >
C/C++ Source or Header  |  2005-01-29  |  2KB  |  52 lines

  1. /* profil.h: gprof profiling header file
  2.  
  3.    Copyright 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
  4.  
  5. This file is part of Cygwin.
  6.  
  7. This software is a copyrighted work licensed under the terms of the
  8. Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
  9. details. */
  10.  
  11. /*
  12.  * This file is taken from Cygwin distribution. Please keep it in sync.
  13.  * The differences should be within __MINGW32__ guard.
  14.  */
  15.  
  16. /* profiling frequency.  (No larger than 1000) */
  17. #define PROF_HZ            100
  18.  
  19. /* convert an addr to an index */
  20. #define PROFIDX(pc, base, scale)    \
  21.   ({                                    \
  22.     size_t i = (pc - base) / 2;                \
  23.     if (sizeof (unsigned long long int) > sizeof (size_t))        \
  24.       i = (unsigned long long int) i * scale / 65536;            \
  25.     else                                \
  26.       i = i / 65536 * scale + i % 65536 * scale / 65536;        \
  27.     i;                                    \
  28.   })
  29.  
  30. /* convert an index into an address */
  31. #define PROFADDR(idx, base, scale)        \
  32.   ((base)                    \
  33.    + ((((unsigned long long)(idx) << 16)    \
  34.        / (unsigned long long)(scale)) << 1))
  35.  
  36. /* convert a bin size into a scale */
  37. #define PROFSCALE(range, bins)        (((bins) << 16) / ((range) >> 1))
  38.  
  39. typedef void *_WINHANDLE;
  40.  
  41. struct profinfo {
  42.     _WINHANDLE targthr;            /* thread to profile */
  43.     _WINHANDLE profthr;            /* profiling thread */
  44.     u_short *counter;            /* profiling counters */
  45.     u_long lowpc, highpc;        /* range to be profiled */
  46.     u_int scale;            /* scale value of bins */
  47. };
  48.  
  49. int profile_ctl(struct profinfo *, char *, size_t, u_long, u_int);
  50. int profil(char *, size_t, u_long, u_int);
  51.  
  52.