xref: /third_party/rust/crates/rustix/tests/process/membarrier.rs (revision b8a62b91)
  • Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
  • only in /third_party/rust/crates/rustix/tests/process/
1#[test]
2fn test_membarrier() {
3    use rustix::process::{membarrier, membarrier_query, MembarrierCommand, MembarrierQuery};
4
5    let query: MembarrierQuery = membarrier_query();
6
7    // Supported registration commands should succeed.
8    for cmd in [
9        MembarrierCommand::RegisterGlobalExpedited,
10        MembarrierCommand::RegisterPrivateExpedited,
11        MembarrierCommand::RegisterPrivateExpeditedSyncCore,
12        MembarrierCommand::RegisterPrivateExpeditedRseq,
13    ]
14    .iter()
15    .copied()
16    {
17        if query.contains_command(cmd) {
18            membarrier(cmd).unwrap();
19        }
20    }
21
22    // All supported commands should now succeed, and all unsupported
23    // commands should fail.
24    for cmd in [
25        MembarrierCommand::Global,
26        MembarrierCommand::GlobalExpedited,
27        MembarrierCommand::PrivateExpedited,
28        MembarrierCommand::PrivateExpeditedSyncCore,
29        MembarrierCommand::PrivateExpeditedRseq,
30    ]
31    .iter()
32    .copied()
33    {
34        if query.contains_command(cmd) {
35            membarrier(cmd).unwrap();
36        } else {
37            membarrier(cmd).unwrap_err();
38        }
39    }
40}
41

Indexes created Thu Nov 07 10:32:03 CST 2024