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

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

Issue 8159001: Update third_party/psutil and fix the licence issue with it. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove the suppression and unnecessary files. Created 9 years, 2 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/_psosx.py ('k') | third_party/psutil/psutil/_psutil_bsd.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/psutil/psutil/_psposix.py
diff --git a/third_party/psutil/psutil/_psposix.py b/third_party/psutil/psutil/_psposix.py
index cd860a5ff554ecfabccd7e79d85f05039d0cf022..08cc268f659f90f811989ea4ce69da0fd2493d09 100644
--- a/third_party/psutil/psutil/_psposix.py
+++ b/third_party/psutil/psutil/_psposix.py
@@ -1,7 +1,10 @@
#!/usr/bin/env python
#
-# $Id: _psposix.py 800 2010-11-12 21:51:25Z g.rodola $
+# $Id: _psposix.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.
"""Routines common to all posix systems."""
@@ -13,13 +16,12 @@ import socket
import re
import sys
import warnings
+import time
+import glob
-try:
- from collections import namedtuple
-except ImportError:
- from psutil.compat import namedtuple # python < 2.6
-
-from psutil.error import AccessDenied, NoSuchProcess
+from psutil.error import AccessDenied, NoSuchProcess, TimeoutExpired
+from psutil._compat import namedtuple
+from psutil._common import ntuple_diskinfo, usage_percent
def pid_exists(pid):
@@ -33,6 +35,82 @@ def pid_exists(pid):
else:
return True
+def wait_pid(pid, timeout=None):
+ """Wait for process with pid 'pid' to terminate and return its
+ exit status code as an integer.
+
+ If pid is not a children of os.getpid() (current process) just
+ waits until the process disappears and return None.
+
+ If pid does not exist at all return None immediately.
+
+ Raise TimeoutExpired on timeout expired.
+ """
+ def check_timeout():
+ if timeout is not None:
+ if time.time() >= stop_at:
+ raise TimeoutExpired
+ time.sleep(0.001)
+
+ if timeout is not None:
+ waitcall = lambda: os.waitpid(pid, os.WNOHANG)
+ stop_at = time.time() + timeout
+ else:
+ waitcall = lambda: os.waitpid(pid, 0)
+
+ while 1:
+ try:
+ retpid, status = waitcall()
+ except OSError, err:
+ if err.errno == errno.EINTR:
+ check_timeout()
+ continue
+ elif err.errno == errno.ECHILD:
+ # not a child of os.getpid(): poll until pid has
+ # disappeared and return None instead
+ while 1:
+ if pid_exists(pid):
+ check_timeout()
+ else:
+ return
+ else:
+ raise
+ else:
+ if retpid == 0:
+ check_timeout()
+ continue
+ # process exited due to a signal; return the integer of
+ # that signal
+ if os.WIFSIGNALED(status):
+ return os.WTERMSIG(status)
+ # process exited using exit(2) system call; return the
+ # integer exit(2) system call has been called with
+ elif os.WIFEXITED(status):
+ return os.WEXITSTATUS(status)
+ else:
+ # should never happen
+ raise RuntimeError("unknown process exit status")
+
+def get_disk_usage(path):
+ """Return disk usage associated with path."""
+ st = os.statvfs(path)
+ free = (st.f_bavail * st.f_frsize)
+ total = (st.f_blocks * st.f_frsize)
+ used = (st.f_blocks - st.f_bfree) * st.f_frsize
+ percent = usage_percent(used, total, _round=1)
+ # NB: the percentage is -5% than what shown by df due to
+ # reserved blocks that we are currently not considering:
+ # http://goo.gl/sWGbH
+ return ntuple_diskinfo(total, used, free, percent)
+
+def _get_terminal_map():
+ ret = {}
+ ls = glob.glob('/dev/tty*') + glob.glob('/dev/pts/*')
+ for name in ls:
+ assert name not in ret
+ ret[os.stat(name).st_rdev] = name
+ return ret
+
class LsofParser:
"""A wrapper for lsof command line utility.
« no previous file with comments | « third_party/psutil/psutil/_psosx.py ('k') | third_party/psutil/psutil/_psutil_bsd.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698