Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(228)

Unified Diff: third_party/psutil/psutil/_psosx.py

Issue 6246123: Moving psutil to third_party. This is first step for Media Performance test project. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: modification based on code review's comments Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/psutil/psutil/_psmswindows.py ('k') | third_party/psutil/psutil/_psposix.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/psutil/psutil/_psosx.py
diff --git a/third_party/psutil/psutil/_psosx.py b/third_party/psutil/psutil/_psosx.py
new file mode 100644
index 0000000000000000000000000000000000000000..f8c867e611dfe946ef6a02881c8e328b719e1a11
--- /dev/null
+++ b/third_party/psutil/psutil/_psosx.py
@@ -0,0 +1,157 @@
+#!/usr/bin/env python
+#
+# $Id: _psosx.py 794 2010-11-12 13:29:52Z g.rodola $
+#
+
+import errno
+import os
+
+try:
+ from collections import namedtuple
+except ImportError:
+ from psutil.compat import namedtuple # python < 2.6
+
+import _psutil_osx
+import _psposix
+from psutil.error import AccessDenied, NoSuchProcess
+
+# --- constants
+
+NUM_CPUS = _psutil_osx.get_num_cpus()
+TOTAL_PHYMEM = _psutil_osx.get_total_phymem()
+
+# --- functions
+
+def avail_phymem():
+ "Return the amount of physical memory available on the system, in bytes."
+ return _psutil_osx.get_avail_phymem()
+
+def used_phymem():
+ "Return the amount of physical memory currently in use on the system, in bytes."
+ return TOTAL_PHYMEM - _psutil_osx.get_avail_phymem()
+
+def total_virtmem():
+ "Return the amount of total virtual memory available on the system, in bytes."
+ return _psutil_osx.get_total_virtmem()
+
+def avail_virtmem():
+ "Return the amount of virtual memory currently in use on the system, in bytes."
+ return _psutil_osx.get_avail_virtmem()
+
+def used_virtmem():
+ """Return the amount of used memory currently in use on the system, in bytes."""
+ return _psutil_osx.get_total_virtmem() - _psutil_osx.get_avail_virtmem()
+
+def get_system_cpu_times():
+ """Return a dict representing the following CPU times:
+ user, nice, system, idle."""
+ values = _psutil_osx.get_system_cpu_times()
+ return dict(user=values[0], nice=values[1], system=values[2], idle=values[3])
+
+def get_pid_list():
+ """Returns a list of PIDs currently running on the system."""
+ return _psutil_osx.get_pid_list()
+
+def pid_exists(pid):
+ """Check For the existence of a unix pid."""
+ return _psposix.pid_exists(pid)
+
+# --- decorator
+
+def wrap_exceptions(callable):
+ """Call callable into a try/except clause so that if an
+ OSError EPERM exception is raised we translate it into
+ psutil.AccessDenied.
+ """
+ def wrapper(self, *args, **kwargs):
+ try:
+ return callable(self, *args, **kwargs)
+ except OSError, err:
+ if err.errno == errno.ESRCH:
+ raise NoSuchProcess(self.pid, self._process_name)
+ if err.errno in (errno.EPERM, errno.EACCES):
+ raise AccessDenied(self.pid, self._process_name)
+ raise
+ return wrapper
+
+
+class OSXProcess(object):
+ """Wrapper class around underlying C implementation."""
+
+ _meminfo_ntuple = namedtuple('meminfo', 'rss vms')
+ _cputimes_ntuple = namedtuple('cputimes', 'user system')
+ __slots__ = ["pid", "_process_name"]
+
+ def __init__(self, pid):
+ self.pid = pid
+ self._process_name = None
+
+ @wrap_exceptions
+ def get_process_name(self):
+ """Return process name as a string of limited len (15)."""
+ return _psutil_osx.get_process_name(self.pid)
+
+ def get_process_exe(self):
+ # no such thing as "exe" on OS X; it will maybe be determined
+ # later from cmdline[0]
+ if not pid_exists(self.pid):
+ raise NoSuchProcess(self.pid, self._process_name)
+ return ""
+
+ @wrap_exceptions
+ def get_process_cmdline(self):
+ """Return process cmdline as a list of arguments."""
+ if not pid_exists(self.pid):
+ raise NoSuchProcess(self.pid, self._process_name)
+ return _psutil_osx.get_process_cmdline(self.pid)
+
+ @wrap_exceptions
+ def get_process_ppid(self):
+ """Return process parent pid."""
+ return _psutil_osx.get_process_ppid(self.pid)
+
+ @wrap_exceptions
+ def get_process_uid(self):
+ """Return process real user id."""
+ return _psutil_osx.get_process_uid(self.pid)
+
+ @wrap_exceptions
+ def get_process_gid(self):
+ """Return process real group id."""
+ return _psutil_osx.get_process_gid(self.pid)
+
+ @wrap_exceptions
+ def get_memory_info(self):
+ """Return a tuple with the process' RSS and VMS size."""
+ rss, vms = _psutil_osx.get_memory_info(self.pid)
+ return self._meminfo_ntuple(rss, vms)
+
+ @wrap_exceptions
+ def get_cpu_times(self):
+ user, system = _psutil_osx.get_cpu_times(self.pid)
+ return self._cputimes_ntuple(user, system)
+
+ @wrap_exceptions
+ def get_process_create_time(self):
+ """Return the start time of the process as a number of seconds since
+ the epoch."""
+ return _psutil_osx.get_process_create_time(self.pid)
+
+ @wrap_exceptions
+ def get_process_num_threads(self):
+ """Return the number of threads belonging to the process."""
+ return _psutil_osx.get_process_num_threads(self.pid)
+
+ def get_open_files(self):
+ """Return files opened by process by parsing lsof output."""
+ lsof = _psposix.LsofParser(self.pid, self._process_name)
+ return lsof.get_process_open_files()
+
+ def get_connections(self):
+ """Return etwork connections opened by a process as a list of
+ namedtuples."""
+ lsof = _psposix.LsofParser(self.pid, self._process_name)
+ return lsof.get_process_connections()
+
+PlatformProcess = OSXProcess
+
« no previous file with comments | « third_party/psutil/psutil/_psmswindows.py ('k') | third_party/psutil/psutil/_psposix.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698