/*----------------------------------------------------------------------------*/

/*
 * Performance-Monitoring Counters Library, for Intel/AMD Processors and Linux
 * Author:  Don Heller, dheller@scl.ameslab.gov
 * Last revised:  19 January 2001
 */

/*----------------------------------------------------------------------------*/

/* measure a child process by periodic sampling */

/*----------------------------------------------------------------------------*/

#include <pmc_lib.h>

/* for exit() */
#include <stdlib.h>

/*----------------------------------------------------------------------------*/

int main(int argc, char * argv[])
{
  int stat = RABBIT_NO_STATUS;
  pmc_control_t Ctl = pmc_control_null;

  /* initialize internal data structures, read command-line arguments */

  if (pmc_getargs(stderr, "rabbit", &argc, &argv, &Ctl) == FALSE)
    { exit(RABBIT_FAILURE); }

  if (argc == 0)
    {
      fprintf(stderr, "rabbit: No program specified.\n");
      exit(RABBIT_FAILURE);
    }

  if (pmc_open(0) == FALSE)		/* open /dev/pmc */
    { exit(RABBIT_FAILURE); }

  pmc_run_command(argc, argv, &Ctl);	/* do the work in a child process */

  pmc_close();				/* close /dev/pmc */

  /* return the status from the program that was executed */

  stat = pmc_print_results(argc, argv, &Ctl);

  exit(stat);
}

/*----------------------------------------------------------------------------*/
