swap.rs 685 B

1234567891011121314151617181920212223
  1. use std::ffi::{CString};
  2. use nix::libc::swapon;
  3. use crate::log::logger;
  4. pub fn swap_on(dev: &str) {
  5. let cstr_res = CString::new(dev.clone());
  6. let cstr = match cstr_res {
  7. Ok(v) => v,
  8. Err(err) => {
  9. logger().warn("swap", format!("failed convert dev path '{}' to CString: {:?}", dev, err).as_str());
  10. return;
  11. }
  12. };
  13. let ret = unsafe {
  14. swapon(cstr.as_ptr(),0)
  15. };
  16. if ret != 0 {
  17. let eno = nix::errno::from_i32(ret);
  18. logger().warn("swap", format!("failed turn on swap'{}': {:?}", dev, eno).as_str());
  19. }else{
  20. logger().info("swap", format!("turn on swap '{}' ok.", dev).as_str());
  21. }
  22. }