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