• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #[test]
test_membarrier()2 fn 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