Index: third_party/psutil/psutil/_psosx.py |
diff --git a/third_party/psutil/psutil/_psosx.py b/third_party/psutil/psutil/_psosx.py |
index f8c867e611dfe946ef6a02881c8e328b719e1a11..543124c077d3b3ba41de1b65fad12875c1be14d6 100644 |
--- a/third_party/psutil/psutil/_psosx.py |
+++ b/third_party/psutil/psutil/_psosx.py |
@@ -1,60 +1,84 @@ |
#!/usr/bin/env python |
# |
-# $Id: _psosx.py 794 2010-11-12 13:29:52Z g.rodola $ |
+# $Id: _psosx.py 1142 2011-10-05 18:45:49Z g.rodola $ |
# |
+# Copyright (c) 2009, Jay Loden, Giampaolo Rodola'. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+"""OSX platform implementation.""" |
import errno |
import os |
-try: |
- from collections import namedtuple |
-except ImportError: |
- from psutil.compat import namedtuple # python < 2.6 |
- |
import _psutil_osx |
+import _psutil_posix |
import _psposix |
-from psutil.error import AccessDenied, NoSuchProcess |
+from psutil.error import AccessDenied, NoSuchProcess, TimeoutExpired |
+from psutil._compat import namedtuple |
+from psutil._common import * |
+ |
+__extra__all__ = [] |
# --- constants |
NUM_CPUS = _psutil_osx.get_num_cpus() |
-TOTAL_PHYMEM = _psutil_osx.get_total_phymem() |
+BOOT_TIME = _psutil_osx.get_system_boot_time() |
+_TERMINAL_MAP = _psposix._get_terminal_map() |
+_cputimes_ntuple = namedtuple('cputimes', 'user nice system idle') |
# --- 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 phymem_usage(): |
+ """Physical system memory as a (total, used, free) tuple.""" |
+ total = _psutil_osx.get_total_phymem() |
+ free = _psutil_osx.get_avail_phymem() |
+ used = total - free |
+ percent = usage_percent(used, total, _round=1) |
+ return ntuple_sysmeminfo(total, used, free, percent) |
+ |
+def virtmem_usage(): |
+ """Virtual system memory as a (total, used, free) tuple.""" |
+ total = _psutil_osx.get_total_virtmem() |
+ free = _psutil_osx.get_avail_virtmem() |
+ used = total - free |
+ percent = usage_percent(used, total, _round=1) |
+ return ntuple_sysmeminfo(total, used, free, percent) |
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) |
+ """Return system CPU times as a namedtuple.""" |
+ user, nice, system, idle = _psutil_osx.get_system_cpu_times() |
+ return _cputimes_ntuple(user, nice, system, idle) |
+ |
+def get_system_per_cpu_times(): |
+ """Return system CPU times as a named tuple""" |
+ ret = [] |
+ for cpu_t in _psutil_osx.get_system_per_cpu_times(): |
+ user, nice, system, idle = cpu_t |
+ item = _cputimes_ntuple(user, nice, system, idle) |
+ ret.append(item) |
+ return ret |
+ |
+def disk_partitions(all=False): |
+ retlist = [] |
+ partitions = _psutil_osx.get_disk_partitions() |
+ for partition in partitions: |
+ device, mountpoint, fstype = partition |
+ if device == 'none': |
+ device = '' |
+ if not all: |
+ if not os.path.isabs(device) \ |
+ or not os.path.exists(device): |
+ continue |
+ ntuple = ntuple_partition(device, mountpoint, fstype) |
+ retlist.append(ntuple) |
+ return retlist |
+ |
+get_pid_list = _psutil_osx.get_pid_list |
+pid_exists = _psposix.pid_exists |
+get_disk_usage = _psposix.get_disk_usage |
+network_io_counters = _psutil_osx.get_network_io_counters |
+disk_io_counters = _psutil_osx.get_disk_io_counters |
# --- decorator |
@@ -75,11 +99,17 @@ def wrap_exceptions(callable): |
return wrapper |
-class OSXProcess(object): |
+_status_map = { |
+ _psutil_osx.SIDL : STATUS_IDLE, |
+ _psutil_osx.SRUN : STATUS_RUNNING, |
+ _psutil_osx.SSLEEP : STATUS_SLEEPING, |
+ _psutil_osx.SSTOP : STATUS_STOPPED, |
+ _psutil_osx.SZOMB : STATUS_ZOMBIE, |
+} |
+ |
+class Process(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): |
@@ -111,25 +141,33 @@ class OSXProcess(object): |
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) |
+ def get_process_uids(self): |
+ real, effective, saved = _psutil_osx.get_process_uids(self.pid) |
+ return ntuple_uids(real, effective, saved) |
@wrap_exceptions |
- def get_process_gid(self): |
- """Return process real group id.""" |
- return _psutil_osx.get_process_gid(self.pid) |
+ def get_process_gids(self): |
+ real, effective, saved = _psutil_osx.get_process_gids(self.pid) |
+ return ntuple_gids(real, effective, saved) |
+ |
+ @wrap_exceptions |
+ def get_process_terminal(self): |
+ tty_nr = _psutil_osx.get_process_tty_nr(self.pid) |
+ try: |
+ return _TERMINAL_MAP[tty_nr] |
+ except KeyError: |
+ return None |
@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) |
+ return ntuple_meminfo(rss, vms) |
@wrap_exceptions |
def get_cpu_times(self): |
user, system = _psutil_osx.get_cpu_times(self.pid) |
- return self._cputimes_ntuple(user, system) |
+ return ntuple_cputimes(user, system) |
@wrap_exceptions |
def get_process_create_time(self): |
@@ -142,16 +180,54 @@ class OSXProcess(object): |
"""Return the number of threads belonging to the process.""" |
return _psutil_osx.get_process_num_threads(self.pid) |
+ @wrap_exceptions |
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() |
+ """Return files opened by process.""" |
+ if self.pid == 0: |
+ raise AccessDenied(self.pid, self._process_name) |
+ files = [] |
+ rawlist = _psutil_osx.get_process_open_files(self.pid) |
+ for path, fd in rawlist: |
+ if os.path.isfile(path): |
+ ntuple = ntuple_openfile(path, fd) |
+ files.append(ntuple) |
+ return files |
+ @wrap_exceptions |
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() |
+ retlist = _psutil_osx.get_process_connections(self.pid) |
+ return [ntuple_connection(*conn) for conn in retlist] |
+ |
+ @wrap_exceptions |
+ def process_wait(self, timeout=None): |
+ try: |
+ return _psposix.wait_pid(self.pid, timeout) |
+ except TimeoutExpired: |
+ raise TimeoutExpired(self.pid, self._process_name) |
+ |
+ @wrap_exceptions |
+ def get_process_nice(self): |
+ return _psutil_posix.getpriority(self.pid) |
+ |
+ @wrap_exceptions |
+ def set_process_nice(self, value): |
+ return _psutil_posix.setpriority(self.pid, value) |
-PlatformProcess = OSXProcess |
+ @wrap_exceptions |
+ def get_process_status(self): |
+ code = _psutil_osx.get_process_status(self.pid) |
+ if code in _status_map: |
+ return _status_map[code] |
+ return constant(-1, "?") |
+ @wrap_exceptions |
+ def get_process_threads(self): |
+ """Return the number of threads belonging to the process.""" |
+ rawlist = _psutil_osx.get_process_threads(self.pid) |
+ retlist = [] |
+ for thread_id, utime, stime in rawlist: |
+ ntuple = ntuple_thread(thread_id, utime, stime) |
+ retlist.append(ntuple) |
+ return retlist |