root/tools/testing/selftests/powerpc/pmu/ebb/cycles_test.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. cycles
  2. main

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * Copyright 2014, Michael Ellerman, IBM Corp.
   4  */
   5 
   6 #include <stdio.h>
   7 #include <stdlib.h>
   8 
   9 #include "ebb.h"
  10 
  11 
  12 /*
  13  * Basic test that counts user cycles and takes EBBs.
  14  */
  15 int cycles(void)
  16 {
  17         struct event event;
  18 
  19         SKIP_IF(!ebb_is_supported());
  20 
  21         event_init_named(&event, 0x1001e, "cycles");
  22         event_leader_ebb_init(&event);
  23 
  24         event.attr.exclude_kernel = 1;
  25         event.attr.exclude_hv = 1;
  26         event.attr.exclude_idle = 1;
  27 
  28         FAIL_IF(event_open(&event));
  29 
  30         ebb_enable_pmc_counting(1);
  31         setup_ebb_handler(standard_ebb_callee);
  32         ebb_global_enable();
  33         FAIL_IF(ebb_event_enable(&event));
  34 
  35         mtspr(SPRN_PMC1, pmc_sample_period(sample_period));
  36 
  37         while (ebb_state.stats.ebb_count < 10) {
  38                 FAIL_IF(core_busy_loop());
  39                 FAIL_IF(ebb_check_mmcr0());
  40         }
  41 
  42         ebb_global_disable();
  43         ebb_freeze_pmcs();
  44 
  45         count_pmc(1, sample_period);
  46 
  47         dump_ebb_state();
  48 
  49         event_close(&event);
  50 
  51         FAIL_IF(ebb_state.stats.ebb_count == 0);
  52         FAIL_IF(!ebb_check_count(1, sample_period, 100));
  53 
  54         return 0;
  55 }
  56 
  57 int main(void)
  58 {
  59         return test_harness(cycles, "cycles");
  60 }

/* [<][>][^][v][top][bottom][index][help] */