| // SPDX-License-Identifier: GPL-2.0-only |
| /* |
| * Copyright 2022, Athira Rajeev, IBM Corp. |
| */ |
| |
| #include <stdio.h> |
| #include "../event.h" |
| #include "../sampling_tests/misc.h" |
| |
| #define EventCode_1 0x35340401e0 |
| #define EventCode_2 0x353c0101ec |
| #define EventCode_3 0x35340101ec |
| /* |
| * Test that using different sample bits in |
| * event code cause failure in schedule for |
| * group of events. |
| */ |
| |
| static int group_constraint_mmcra_sample(void) |
| { |
| struct event event, leader; |
| |
| SKIP_IF(platform_check_for_tests()); |
| |
| /* |
| * Events with different "sample" field values |
| * in a group will fail to schedule. |
| * Use event with load only sampling mode as |
| * group leader. Use event with store only sampling |
| * as sibling event. |
| */ |
| event_init(&leader, EventCode_1); |
| FAIL_IF(event_open(&leader)); |
| |
| event_init(&event, EventCode_2); |
| |
| /* Expected to fail as sibling event doesn't use same sampling bits as leader */ |
| FAIL_IF(!event_open_with_group(&event, leader.fd)); |
| |
| event_init(&event, EventCode_3); |
| |
| /* Expected to pass as sibling event use same sampling bits as leader */ |
| FAIL_IF(event_open_with_group(&event, leader.fd)); |
| |
| event_close(&leader); |
| event_close(&event); |
| |
| return 0; |
| } |
| |
| int main(void) |
| { |
| return test_harness(group_constraint_mmcra_sample, "group_constraint_mmcra_sample"); |
| } |