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

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

DEFINITIONS

This source file includes following definitions.
  1. event_attributes
  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  * Test various attributes of the EBB event are enforced.
  14  */
  15 int event_attributes(void)
  16 {
  17         struct event event, leader;
  18 
  19         SKIP_IF(!ebb_is_supported());
  20 
  21         event_init(&event, 0x1001e);
  22         event_leader_ebb_init(&event);
  23         /* Expected to succeed */
  24         FAIL_IF(event_open(&event));
  25         event_close(&event);
  26 
  27 
  28         event_init(&event, 0x001e); /* CYCLES - no PMC specified */
  29         event_leader_ebb_init(&event);
  30         /* Expected to fail, no PMC specified */
  31         FAIL_IF(event_open(&event) == 0);
  32 
  33 
  34         event_init(&event, 0x2001e);
  35         event_leader_ebb_init(&event);
  36         event.attr.exclusive = 0;
  37         /* Expected to fail, not exclusive */
  38         FAIL_IF(event_open(&event) == 0);
  39 
  40 
  41         event_init(&event, 0x3001e);
  42         event_leader_ebb_init(&event);
  43         event.attr.freq = 1;
  44         /* Expected to fail, sets freq */
  45         FAIL_IF(event_open(&event) == 0);
  46 
  47 
  48         event_init(&event, 0x4001e);
  49         event_leader_ebb_init(&event);
  50         event.attr.sample_period = 1;
  51         /* Expected to fail, sets sample_period */
  52         FAIL_IF(event_open(&event) == 0);
  53 
  54 
  55         event_init(&event, 0x1001e);
  56         event_leader_ebb_init(&event);
  57         event.attr.enable_on_exec = 1;
  58         /* Expected to fail, sets enable_on_exec */
  59         FAIL_IF(event_open(&event) == 0);
  60 
  61 
  62         event_init(&event, 0x1001e);
  63         event_leader_ebb_init(&event);
  64         event.attr.inherit = 1;
  65         /* Expected to fail, sets inherit */
  66         FAIL_IF(event_open(&event) == 0);
  67 
  68 
  69         event_init(&leader, 0x1001e);
  70         event_leader_ebb_init(&leader);
  71         FAIL_IF(event_open(&leader));
  72 
  73         event_init(&event, 0x20002);
  74         event_ebb_init(&event);
  75 
  76         /* Expected to succeed */
  77         FAIL_IF(event_open_with_group(&event, leader.fd));
  78         event_close(&leader);
  79         event_close(&event);
  80 
  81 
  82         event_init(&leader, 0x1001e);
  83         event_leader_ebb_init(&leader);
  84         FAIL_IF(event_open(&leader));
  85 
  86         event_init(&event, 0x20002);
  87 
  88         /* Expected to fail, event doesn't request EBB, leader does */
  89         FAIL_IF(event_open_with_group(&event, leader.fd) == 0);
  90         event_close(&leader);
  91 
  92 
  93         event_init(&leader, 0x1001e);
  94         event_leader_ebb_init(&leader);
  95         /* Clear the EBB flag */
  96         leader.attr.config &= ~(1ull << 63);
  97 
  98         FAIL_IF(event_open(&leader));
  99 
 100         event_init(&event, 0x20002);
 101         event_ebb_init(&event);
 102 
 103         /* Expected to fail, leader doesn't request EBB */
 104         FAIL_IF(event_open_with_group(&event, leader.fd) == 0);
 105         event_close(&leader);
 106 
 107 
 108         event_init(&leader, 0x1001e);
 109         event_leader_ebb_init(&leader);
 110         leader.attr.exclusive = 0;
 111         /* Expected to fail, leader isn't exclusive */
 112         FAIL_IF(event_open(&leader) == 0);
 113 
 114 
 115         event_init(&leader, 0x1001e);
 116         event_leader_ebb_init(&leader);
 117         leader.attr.pinned = 0;
 118         /* Expected to fail, leader isn't pinned */
 119         FAIL_IF(event_open(&leader) == 0);
 120 
 121         event_init(&event, 0x1001e);
 122         event_leader_ebb_init(&event);
 123         /* Expected to fail, not a task event */
 124         SKIP_IF(require_paranoia_below(1));
 125         FAIL_IF(event_open_with_cpu(&event, 0) == 0);
 126 
 127         return 0;
 128 }
 129 
 130 int main(void)
 131 {
 132         return test_harness(event_attributes, "event_attributes");
 133 }

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