Linux Audio

Check our new training course

Linux kernel drivers training

Mar 31-Apr 9, 2025, special US time zones
Register
Loading...
v4.10.11
  1/*
  2 * Copyright 2014, Michael Ellerman, IBM Corp.
  3 * Licensed under GPLv2.
  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 */
 15int 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
130int main(void)
131{
132	return test_harness(event_attributes, "event_attributes");
133}
v4.17
  1/*
  2 * Copyright 2014, Michael Ellerman, IBM Corp.
  3 * Licensed under GPLv2.
  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 */
 15int 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
130int main(void)
131{
132	return test_harness(event_attributes, "event_attributes");
133}