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