fix memory info code
diff --git a/sensors/ps_mem.py b/sensors/ps_mem.py
index 2e0fed8..dc5088b 100644
--- a/sensors/ps_mem.py
+++ b/sensors/ps_mem.py
@@ -6,91 +6,35 @@
 # Source:  http://www.pixelbeat.org/scripts/ps_mem.py
 #   http://github.com/pixelb/scripts/commits/master/scripts/ps_mem.py
 
-import errno
-import os
-import sys
 
+# Note shared is always a subset of rss (trs is not always)
+def get_mem_stats(pid):
+    """ Return memory data of pid in format (private, shared) """
 
+    fname = '/proc/{0}/{1}'.format(pid, "smaps")
+    lines = open(fname).readlines()
 
-class Proc:
-    def __init__(self):
-        uname = os.uname()
-        if uname[0] == "FreeBSD":
-            self.proc = '/compat/linux/proc'
-        else:
-            self.proc = '/proc'
+    shared = 0
+    private = 0
+    pss = 0
 
-    def path(self, *args):
-        return os.path.join(self.proc, *(str(a) for a in args))
+    # add 0.5KiB as this avg error due to trunctation
+    pss_adjust = 0.5
 
-    def open(self, *args):
-        try:
-            return open(self.path(*args))
-        except (IOError, OSError):
-            val = sys.exc_info()[1]
-            if (val.errno == errno.ENOENT or # kernel thread or process gone
-                val.errno == errno.EPERM):
-                raise LookupError
-            raise
+    for line in lines:
+        if line.startswith("Shared"):
+            shared += int(line.split()[1])
 
+        if line.startswith("Private"):
+            private += int(line.split()[1])
 
-def kernel_ver():
-    """ Return (major,minor,release)"""
-    proc = Proc()
-    kv = proc.open('sys/kernel/osrelease').readline().split(".")[:3]
-    last = len(kv)
-    if last == 2:
-        kv.append('0')
-    last -= 1
-    while last > 0:
-        for char in "-_":
-            kv[last] = kv[last].split(char)[0]
-        try:
-            int(kv[last])
-        except:
-            kv[last] = 0
-        last -= 1
-    return (int(kv[0]), int(kv[1]), int(kv[2]))
+        if line.startswith("Pss"):
+            pss += float(line.split()[1]) + pss_adjust
 
+    # Note Shared + Private = Rss above
+    # The Rss in smaps includes video card mem etc.
 
-#Note shared is always a subset of rss (trs is not always)
-def getMemStats(pid):
-    """ Return memory data of pid in format (Private, Shared) """
+    if pss != 0:
+        shared = int(pss - private)
 
-    PAGESIZE = os.sysconf("SC_PAGE_SIZE") / 1024 #KiB
-    proc = Proc()
-
-    Private_lines = []
-    Shared_lines = []
-    Pss_lines = []
-
-    Rss = (int(proc.open(pid, 'statm').readline().split()[1])
-           * PAGESIZE)
-
-    if os.path.exists(proc.path(pid, 'smaps')): #stat
-        for line in proc.open(pid, 'smaps').readlines(): #open
-            # Note we checksum smaps as maps is usually but
-            # not always different for separate processes.
-            if line.startswith("Shared"):
-                Shared_lines.append(line)
-            elif line.startswith("Private"):
-                Private_lines.append(line)
-            elif line.startswith("Pss"):
-                have_pss = 1
-                Pss_lines.append(line)
-        Shared = sum([int(line.split()[1]) for line in Shared_lines])
-        Private = sum([int(line.split()[1]) for line in Private_lines])
-        #Note Shared + Private = Rss above
-        #The Rss in smaps includes video card mem etc.
-        if have_pss:
-            pss_adjust = 0.5 # add 0.5KiB as this avg error due to trunctation
-            Pss = sum([float(line.split()[1])+pss_adjust for line in Pss_lines])
-            Shared = Pss - Private
-    elif (2, 6, 1) <= kernel_ver() <= (2, 6, 9):
-        Shared = 0 #lots of overestimation, but what can we do?
-        Private = Rss
-    else:
-        Shared = int(proc.open(pid, 'statm').readline().split()[2])
-        Shared *= PAGESIZE
-        Private = Rss - Shared
-    return (Private, Shared)
+    return (private, shared)
diff --git a/sensors/psram_sensors.py b/sensors/psram_sensors.py
index ba3da4a..6517520 100644
--- a/sensors/psram_sensors.py
+++ b/sensors/psram_sensors.py
@@ -1,10 +1,8 @@
-from ps_mem import getMemStats
+from ps_mem import get_mem_stats
 
 from discover import provides
 from utils import SensorInfo, get_pid_name, get_pid_list
 
-
-
 @provides("perprocess-ram")
 def psram_stat(disallowed_prefixes=None, allowed_prefixes=None):
     results = {}
@@ -14,7 +12,7 @@
         try:
             dev_name = get_pid_name(pid)
 
-            private, shared = getMemStats(pid)
+            private, shared = get_mem_stats(pid)
             total = private + shared
             sys_total = get_ram_size()
             usage = float(total) / float(sys_total)
@@ -24,7 +22,8 @@
             results[sensor_name + ".private_mem"] = SensorInfo(private, False)
             results[sensor_name + ".shared_mem"] = SensorInfo(shared, False)
             results[sensor_name + ".used_mem"] = SensorInfo(total, False)
-            results[sensor_name + ".mem_usage_percent"] = SensorInfo(usage*100, False)
+            name = sensor_name + ".mem_usage_percent"
+            results[name] = SensorInfo(usage * 100, False)
         except IOError:
             # permission denied or proc die
             continue