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

Unified Diff: third_party/psutil/psutil/_psmswindows.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/_pslinux.py ('k') | third_party/psutil/psutil/_psosx.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/psutil/psutil/_psmswindows.py
diff --git a/third_party/psutil/psutil/_psmswindows.py b/third_party/psutil/psutil/_psmswindows.py
index ec75649594f22597b54278829f4409dc88f4a7f9..81ffad7b37e5cb9e3cc3eeded72912ede9aec788 100644
--- a/third_party/psutil/psutil/_psmswindows.py
+++ b/third_party/psutil/psutil/_psmswindows.py
@@ -1,69 +1,120 @@
#!/usr/bin/env python
#
-# $Id: _psmswindows.py 802 2010-11-12 22:15:29Z g.rodola $
+# $Id: _psmswindows.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.
+
+"""Windows platform implementation."""
import errno
import os
-import subprocess
-import socket
-import re
import sys
import platform
-try:
- from collections import namedtuple
-except ImportError:
- from psutil.compat import namedtuple # python < 2.6
-
import _psutil_mswindows
-from psutil.error import AccessDenied, NoSuchProcess
+from psutil.error import AccessDenied, NoSuchProcess, TimeoutExpired
+from psutil._compat import namedtuple
+from psutil._common import *
+# Windows specific extended namespace
+__extra__all__ = ["ABOVE_NORMAL_PRIORITY_CLASS", "BELOW_NORMAL_PRIORITY_CLASS",
+ "HIGH_PRIORITY_CLASS", "IDLE_PRIORITY_CLASS",
+ "NORMAL_PRIORITY_CLASS", "REALTIME_PRIORITY_CLASS"]
# --- module level constants (gets pushed up to psutil module)
NUM_CPUS = _psutil_mswindows.get_num_cpus()
-TOTAL_PHYMEM = _psutil_mswindows.get_total_phymem()
-_UPTIME = _psutil_mswindows.get_system_uptime()
+BOOT_TIME = _psutil_mswindows.get_system_uptime()
_WIN2000 = platform.win32_ver()[0] == '2000'
-
ERROR_ACCESS_DENIED = 5
+WAIT_TIMEOUT = 0x00000102 # 258 in decimal
+
+# process priority constants:
+# http://msdn.microsoft.com/en-us/library/ms686219(v=vs.85).aspx
+from _psutil_mswindows import (ABOVE_NORMAL_PRIORITY_CLASS,
+ BELOW_NORMAL_PRIORITY_CLASS,
+ HIGH_PRIORITY_CLASS,
+ IDLE_PRIORITY_CLASS,
+ NORMAL_PRIORITY_CLASS,
+ REALTIME_PRIORITY_CLASS,
+ INFINITE)
# --- public functions
-def avail_phymem():
- "Return the amount of physical memory available on the system, in bytes."
- return _psutil_mswindows.get_avail_phymem()
-
-def used_phymem():
- "Return the amount of physical memory currently in use on the system, in bytes."
- return TOTAL_PHYMEM - _psutil_mswindows.get_avail_phymem()
-
-def total_virtmem():
- "Return the amount of total virtual memory available on the system, in bytes."
- return _psutil_mswindows.get_total_virtmem()
-
-def avail_virtmem():
- "Return the amount of virtual memory currently in use on the system, in bytes."
- return _psutil_mswindows.get_avail_virtmem()
-
-def used_virtmem():
- """Return the amount of used memory currently in use on the system, in bytes."""
- return _psutil_mswindows.get_total_virtmem() - _psutil_mswindows.get_avail_virtmem()
+def phymem_usage():
+ """Physical system memory as a (total, used, free) tuple."""
+ all = _psutil_mswindows.get_system_phymem()
+ total, free, total_pagef, avail_pagef, total_virt, free_virt, percent = all
+ used = total - free
+ return ntuple_sysmeminfo(total, used, free, round(percent, 1))
+
+def virtmem_usage():
+ """Virtual system memory as a (total, used, free) tuple."""
+ all = _psutil_mswindows.get_system_phymem()
+ total_virt = all[4]
+ free_virt = all[5]
+ used = total_virt - free_virt
+ percent = usage_percent(used, total_virt, _round=1)
+ return ntuple_sysmeminfo(total_virt, used, free_virt, percent)
+
+def get_disk_usage(path):
+ """Return disk usage associated with path."""
+ try:
+ total, free = _psutil_mswindows.get_disk_usage(path)
+ except WindowsError, err:
+ if not os.path.exists(path):
+ raise OSError(errno.ENOENT, "No such file or directory: '%s'" % path)
+ raise
+ used = total - free
+ percent = usage_percent(used, total, _round=1)
+ return ntuple_diskinfo(total, used, free, percent)
+
+def disk_partitions(all):
+ """Return disk partitions."""
+ retlist = []
+ drive_letters = _psutil_mswindows.win32_GetLogicalDriveStrings()
+ for letter in drive_letters:
+ mountpoint = letter
+ type = _psutil_mswindows.win32_GetDriveType(letter)
+ if not os.path.exists(mountpoint):
+ # usually a CD-ROM device with no disk inserted
+ mountpoint = ""
+ if not all:
+ if type not in ('cdrom', 'fixed', 'removable'):
+ continue
+ if not mountpoint:
+ continue
+ ntuple = ntuple_partition(letter, mountpoint, type)
+ retlist.append(ntuple)
+ return retlist
+
+
+_cputimes_ntuple = namedtuple('cputimes', 'user system idle')
def get_system_cpu_times():
- """Return a dict representing the following CPU times: user, system, idle."""
- times = _psutil_mswindows.get_system_cpu_times()
- return dict(user=times[0], system=times[1], idle=times[2])
-
-def get_pid_list():
- """Returns a list of PIDs currently running on the system."""
- return _psutil_mswindows.get_pid_list()
-
-def pid_exists(pid):
- return _psutil_mswindows.pid_exists(pid)
-
+ """Return system CPU times as a named tuple."""
+ user, system, idle = 0, 0, 0
+ # computes system global times summing each processor value
+ for cpu_time in _psutil_mswindows.get_system_cpu_times():
+ user += cpu_time[0]
+ system += cpu_time[1]
+ idle += cpu_time[2]
+ return _cputimes_ntuple(user, system, idle)
+
+def get_system_per_cpu_times():
+ """Return system per-CPU times as a list of named tuples."""
+ ret = []
+ for cpu_t in _psutil_mswindows.get_system_cpu_times():
+ user, system, idle = cpu_t
+ item = _cputimes_ntuple(user, system, idle)
+ ret.append(item)
+ return ret
+
+get_pid_list = _psutil_mswindows.get_pid_list
+pid_exists = _psutil_mswindows.pid_exists
# --- decorator
@@ -84,14 +135,9 @@ def wrap_exceptions(callable):
return wrapper
-class WindowsProcess(object):
+class Process(object):
"""Wrapper class around underlying C implementation."""
- _meminfo_ntuple = namedtuple('meminfo', 'rss vms')
- _cputimes_ntuple = namedtuple('cputimes', 'user system')
- _openfile_ntuple = namedtuple('openfile', 'path fd')
- _connection_ntuple = namedtuple('connection', 'fd family type local_address '
- 'remote_address status')
__slots__ = ["pid", "_process_name"]
def __init__(self, pid):
@@ -105,10 +151,12 @@ class WindowsProcess(object):
return _psutil_mswindows.get_process_name(self.pid)
def get_process_exe(self):
- # no such thing as "exe" on BSD; it will maybe be determined
+ # no such thing as "exe" on Windows; it will maybe be determined
# later from cmdline[0]
if not pid_exists(self.pid):
raise NoSuchProcess(self.pid, self._process_name)
+ if self.pid in (0, 4):
+ raise AccessDenied(self.pid, self._process_name)
return ""
@wrap_exceptions
@@ -121,26 +169,14 @@ class WindowsProcess(object):
"""Return process parent pid."""
return _psutil_mswindows.get_process_ppid(self.pid)
- def get_process_uid(self):
- # no such thing as uid on Windows
- if not pid_exists(self.pid):
- raise NoSuchProcess(self.pid, self._process_name)
- return -1
-
- def get_process_gid(self):
- # no such thing as gid on Windows
- if not pid_exists(self.pid):
- raise NoSuchProcess(self.pid, self._process_name)
- return -1
-
@wrap_exceptions
def get_memory_info(self):
"""Returns a tuple or RSS/VMS memory usage in bytes."""
# special case for 0 (kernel processes) PID
if self.pid == 0:
- return self._meminfo_ntuple(0, 0)
+ return ntuple_meminfo(0, 0)
rss, vms = _psutil_mswindows.get_memory_info(self.pid)
- return self._meminfo_ntuple(rss, vms)
+ return ntuple_meminfo(rss, vms)
@wrap_exceptions
def kill_process(self):
@@ -148,6 +184,18 @@ class WindowsProcess(object):
return _psutil_mswindows.kill_process(self.pid)
@wrap_exceptions
+ def process_wait(self, timeout=None):
+ if timeout is None:
+ timeout = INFINITE
+ else:
+ # WaitForSingleObject() expects time in milliseconds
+ timeout = int(timeout * 1000)
+ ret = _psutil_mswindows.process_wait(self.pid, timeout)
+ if ret == WAIT_TIMEOUT:
+ raise TimeoutExpired(self.pid, self._process_name)
+ return ret
+
+ @wrap_exceptions
def get_process_username(self):
"""Return the name of the user that owns the process"""
if self.pid in (0, 4) or self.pid == 8 and _WIN2000:
@@ -156,9 +204,9 @@ class WindowsProcess(object):
@wrap_exceptions
def get_process_create_time(self):
- # special case for kernel process PIDs; return system uptime
+ # special case for kernel process PIDs; return system boot time
if self.pid in (0, 4) or self.pid == 8 and _WIN2000:
- return _UPTIME
+ return BOOT_TIME
return _psutil_mswindows.get_process_create_time(self.pid)
@wrap_exceptions
@@ -166,20 +214,31 @@ class WindowsProcess(object):
return _psutil_mswindows.get_process_num_threads(self.pid)
@wrap_exceptions
+ def get_process_threads(self):
+ rawlist = _psutil_mswindows.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
+
+ @wrap_exceptions
def get_cpu_times(self):
user, system = _psutil_mswindows.get_process_cpu_times(self.pid)
- return self._cputimes_ntuple(user, system)
+ return ntuple_cputimes(user, system)
+ @wrap_exceptions
def suspend_process(self):
return _psutil_mswindows.suspend_process(self.pid)
+ @wrap_exceptions
def resume_process(self):
return _psutil_mswindows.resume_process(self.pid)
@wrap_exceptions
def get_process_cwd(self):
if self.pid in (0, 4) or self.pid == 8 and _WIN2000:
- return ''
+ raise AccessDenied(self.pid, self._process_name)
# return a normalized pathname since the native C function appends
# "\\" at the and of the path
path = _psutil_mswindows.get_process_cwd(self.pid)
@@ -200,16 +259,35 @@ class WindowsProcess(object):
file = file.decode('utf8')
if file.startswith('\\Device\\'):
rawdrive = '\\'.join(file.split('\\')[:3])
- driveletter = _psutil_mswindows._QueryDosDevice(rawdrive)
+ driveletter = _psutil_mswindows.win32_QueryDosDevice(rawdrive)
file = file.replace(rawdrive, driveletter)
if os.path.isfile(file) and file not in retlist:
- ntuple = self._openfile_ntuple(file, -1)
+ ntuple = ntuple_openfile(file, -1)
retlist.append(ntuple)
return retlist
@wrap_exceptions
def get_connections(self):
retlist = _psutil_mswindows.get_process_connections(self.pid)
- return [self._connection_ntuple(*conn) for conn in retlist]
+ return [ntuple_connection(*conn) for conn in retlist]
-PlatformProcess = WindowsProcess
+ @wrap_exceptions
+ def get_process_nice(self):
+ return _psutil_mswindows.get_process_priority(self.pid)
+
+ @wrap_exceptions
+ def set_process_nice(self, value):
+ return _psutil_mswindows.set_process_priority(self.pid, value)
+
+ @wrap_exceptions
+ def get_process_io_counters(self):
+ rc, wc, rb, wb =_psutil_mswindows.get_process_io_counters(self.pid)
+ return ntuple_io(rc, wc, rb, wb)
+
+ @wrap_exceptions
+ def get_process_status(self):
+ suspended = _psutil_mswindows.is_process_suspended(self.pid)
+ if suspended:
+ return STATUS_STOPPED
+ else:
+ return STATUS_RUNNING
« no previous file with comments | « third_party/psutil/psutil/_pslinux.py ('k') | third_party/psutil/psutil/_psosx.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698