1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Copyright 2022, Athira Rajeev, IBM Corp. 4 */ 5 6#include <stdio.h> 7#include "../event.h" 8#include "../sampling_tests/misc.h" 9 10/* The processor's L1 data cache was reloaded */ 11#define EventCode1 0x21C040 12#define EventCode2 0x22C040 13 14/* 15 * Testcase for group constraint check 16 * when using events with same PMC. 17 * Multiple events in a group shouldn't 18 * ask for same PMC. If so it should fail. 19 */ 20 21static int group_constraint_repeat(void) 22{ 23 struct event event, leader; 24 25 /* Check for platform support for the test */ 26 SKIP_IF(platform_check_for_tests()); 27 28 /* 29 * Two events in a group using same PMC 30 * should fail to get scheduled. Usei same PMC2 31 * for leader and sibling event which is expected 32 * to fail. 33 */ 34 event_init(&leader, EventCode1); 35 FAIL_IF(event_open(&leader)); 36 37 event_init(&event, EventCode1); 38 39 /* Expected to fail since sibling event is requesting same PMC as leader */ 40 FAIL_IF(!event_open_with_group(&event, leader.fd)); 41 42 event_init(&event, EventCode2); 43 44 /* Expected to pass since sibling event is requesting different PMC */ 45 FAIL_IF(event_open_with_group(&event, leader.fd)); 46 47 event_close(&leader); 48 event_close(&event); 49 50 return 0; 51} 52 53int main(void) 54{ 55 return test_harness(group_constraint_repeat, "group_constraint_repeat"); 56} 57