aboutsummaryrefslogtreecommitdiffstats
path: root/components/util/memory.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/util/memory.rs')
-rw-r--r--components/util/memory.rs28
1 files changed, 15 insertions, 13 deletions
diff --git a/components/util/memory.rs b/components/util/memory.rs
index 487d22aab86..54fd627d5d7 100644
--- a/components/util/memory.rs
+++ b/components/util/memory.rs
@@ -12,8 +12,6 @@ use std::ffi::CString;
#[cfg(target_os = "linux")]
use std::iter::AdditiveIterator;
use std::old_io::timer::sleep;
-#[cfg(target_os="linux")]
-use std::old_io::File;
use std::mem::{size_of, transmute};
use std::ptr::null_mut;
use std::sync::Arc;
@@ -489,15 +487,15 @@ macro_rules! option_try(
#[cfg(target_os="linux")]
fn get_proc_self_statm_field(field: usize) -> Option<u64> {
- let mut f = File::open(&Path::new("/proc/self/statm"));
- match f.read_to_string() {
- Ok(contents) => {
- let s = option_try!(contents.as_slice().words().nth(field));
- let npages = option_try!(s.parse::<u64>().ok());
- Some(npages * (::std::env::page_size() as u64))
- }
- Err(_) => None
- }
+ use std::fs::File;
+ use std::io::Read;
+
+ let mut f = option_try!(File::open("/proc/self/statm").ok());
+ let mut contents = String::new();
+ option_try!(f.read_to_string(&mut contents).ok());
+ let s = option_try!(contents.words().nth(field));
+ let npages = option_try!(s.parse::<u64>().ok());
+ Some(npages * (::std::env::page_size() as u64))
}
#[cfg(target_os="linux")]
@@ -535,6 +533,8 @@ fn get_resident_segments() -> Vec<(String, u64)> {
use regex::Regex;
use std::collections::HashMap;
use std::collections::hash_map::Entry;
+ use std::fs::File;
+ use std::io::{BufReader, BufReadExt};
// The first line of an entry in /proc/<pid>/smaps looks just like an entry
// in /proc/<pid>/maps:
@@ -548,8 +548,10 @@ fn get_resident_segments() -> Vec<(String, u64)> {
//
// Rss: 132 kB
- let path = Path::new("/proc/self/smaps");
- let mut f = ::std::old_io::BufferedReader::new(File::open(&path));
+ let f = match File::open("/proc/self/smaps") {
+ Ok(f) => BufReader::new(f),
+ Err(_) => return vec![],
+ };
let seg_re = Regex::new(
r"^[:xdigit:]+-[:xdigit:]+ (....) [:xdigit:]+ [:xdigit:]+:[:xdigit:]+ \d+ +(.*)").unwrap();