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 group_constraint_repeat(void)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 main(void)53int main(void) 54 { 55 return test_harness(group_constraint_repeat, "group_constraint_repeat"); 56 } 57