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 | #define EventCode_1 0x35340401e0 |
11 | #define EventCode_2 0x353c0101ec |
12 | #define EventCode_3 0x35340101ec |
13 | /* |
14 | * Test that using different sample bits in |
15 | * event code cause failure in schedule for |
16 | * group of events. |
17 | */ |
18 | |
19 | static int group_constraint_mmcra_sample(void) |
20 | { |
21 | struct event event, leader; |
22 | |
23 | SKIP_IF(platform_check_for_tests()); |
24 | |
25 | /* |
26 | * Events with different "sample" field values |
27 | * in a group will fail to schedule. |
28 | * Use event with load only sampling mode as |
29 | * group leader. Use event with store only sampling |
30 | * as sibling event. |
31 | */ |
32 | event_init(e: &leader, EventCode_1); |
33 | FAIL_IF(event_open(e: &leader)); |
34 | |
35 | event_init(e: &event, EventCode_2); |
36 | |
37 | /* Expected to fail as sibling event doesn't use same sampling bits as leader */ |
38 | FAIL_IF(!event_open_with_group(e: &event, group_fd: leader.fd)); |
39 | |
40 | event_init(e: &event, EventCode_3); |
41 | |
42 | /* Expected to pass as sibling event use same sampling bits as leader */ |
43 | FAIL_IF(event_open_with_group(e: &event, group_fd: leader.fd)); |
44 | |
45 | event_close(e: &leader); |
46 | event_close(e: &event); |
47 | |
48 | return 0; |
49 | } |
50 | |
51 | int main(void) |
52 | { |
53 | return test_harness(group_constraint_mmcra_sample, "group_constraint_mmcra_sample"); |
54 | } |
55 |