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

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

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

/* measure this code by periodic sampling */

int pmc_main(int argc, char * argv[]);

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

#include <pmc_lib.h>

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

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

  int Argc = argc;
  char ** Argv = argv;
  int i, t;

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

  if (pmc_getargs(stderr, argv[0], &Argc, &Argv, &Ctl) == FALSE)
    { exit(RABBIT_FAILURE); }

  /* remove the pmc options from the command line */

  t = argc - (Argc + 1);
  for (i = 1; i <= Argc; i++)
    { argv[i] = argv[t + i]; }
  argc = Argc + 1;

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

  pmc_begin_sampling(argc, argv, &Ctl);

  status = pmc_main(argc, argv);

  pmc_end_sampling(argc, argv, &Ctl);

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

  pmc_print_results(argc, argv, &Ctl);	/* ignore the return value */

  exit(status);
}

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