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

Unified Diff: third_party/psutil/psutil/arch/osx/process_info.c

Issue 8919026: Remove psutil from tree, install via install-build-deps.sh (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Sort package list. Created 9 years 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/arch/osx/process_info.h ('k') | third_party/psutil/psutil/error.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/psutil/psutil/arch/osx/process_info.c
diff --git a/third_party/psutil/psutil/arch/osx/process_info.c b/third_party/psutil/psutil/arch/osx/process_info.c
deleted file mode 100644
index ae7d4071459cae959ba0b9947305d8b3c72b6042..0000000000000000000000000000000000000000
--- a/third_party/psutil/psutil/arch/osx/process_info.c
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * $Id: process_info.c 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.
- *
- * Helper functions related to fetching process information. Used by _psutil_osx
- * module methods.
- */
-
-#include <Python.h>
-#include <assert.h>
-#include <errno.h>
-#include <limits.h> /* for INT_MAX */
-#include <stdbool.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <signal.h>
-#include <sys/sysctl.h>
-
-#include "process_info.h"
-#include "../../_psutil_common.h"
-
-
-/*
- * Return 1 if PID exists in the current process list, else 0.
- */
-int
-pid_exists(long pid)
-{
- int kill_ret;
-
- // save some time if it's an invalid PID
- if (pid < 0) {
- return 0;
- }
-
- // if kill returns success of permission denied we know it's a valid PID
- kill_ret = kill(pid , 0);
- if ( (0 == kill_ret) || (EPERM == errno) ) {
- return 1;
- }
-
- // otherwise return 0 for PID not found
- return 0;
-}
-
-
-
-/*
- * Returns a list of all BSD processes on the system. This routine
- * allocates the list and puts it in *procList and a count of the
- * number of entries in *procCount. You are responsible for freeing
- * this list (use "free" from System framework).
- * On success, the function returns 0.
- * On error, the function returns a BSD errno value.
- */
-int
-get_proc_list(kinfo_proc **procList, size_t *procCount)
-{
- /* Declaring mib as const requires use of a cast since the
- * sysctl prototype doesn't include the const modifier. */
- static const int mib3[3] = { CTL_KERN, KERN_PROC, KERN_PROC_ALL };
- size_t size, size2;
- void *ptr;
- int err, lim = 8; /* some limit */
-
- assert( procList != NULL);
- assert(*procList == NULL);
- assert(procCount != NULL);
-
- *procCount = 0;
-
- /* We start by calling sysctl with ptr == NULL and size == 0.
- * That will succeed, and set size to the appropriate length.
- * We then allocate a buffer of at least that size and call
- * sysctl with that buffer. If that succeeds, we're done.
- * If that call fails with ENOMEM, we throw the buffer away
- * and try again.
- * Note that the loop calls sysctl with NULL again. This is
- * is necessary because the ENOMEM failure case sets size to
- * the amount of data returned, not the amount of data that
- * could have been returned.
- */
- while (lim-- > 0) {
- size = 0;
- if (sysctl((int *)mib3, 3, NULL, &size, NULL, 0) == -1) {
- return errno;
- }
-
- size2 = size + (size >> 3); /* add some */
- if (size2 > size) {
- ptr = malloc(size2);
- if (ptr == NULL) {
- ptr = malloc(size);
- } else {
- size = size2;
- }
- }
- else {
- ptr = malloc(size);
- }
- if (ptr == NULL) {
- return ENOMEM;
- }
-
- if (sysctl((int *)mib3, 3, ptr, &size, NULL, 0) == -1) {
- err = errno;
- free(ptr);
- if (err != ENOMEM) {
- return err;
- }
-
- } else {
- *procList = (kinfo_proc *)ptr;
- *procCount = size / sizeof(kinfo_proc);
- return 0;
- }
- }
- return ENOMEM;
-}
-
-
-/* Read the maximum argument size for processes */
-int
-get_argmax()
-{
- int argmax;
- int mib[] = { CTL_KERN, KERN_ARGMAX };
- size_t size = sizeof(argmax);
-
- if (sysctl(mib, 2, &argmax, &size, NULL, 0) == 0) {
- return argmax;
- }
- return 0;
-}
-
-
-/* return process args as a python list */
-PyObject*
-get_arg_list(long pid)
-{
- int mib[3];
- int nargs;
- int len;
- char *procargs;
- char *arg_ptr;
- char *arg_end;
- char *curr_arg;
- size_t argmax;
- PyObject *arg = NULL;
- PyObject *arglist = NULL;
-
- //special case for PID 0 (kernel_task) where cmdline cannot be fetched
- if (pid == 0) {
- return Py_BuildValue("[]");
- }
-
- /* read argmax and allocate memory for argument space. */
- argmax = get_argmax();
- if (! argmax) { return PyErr_SetFromErrno(PyExc_OSError); }
-
- procargs = (char *)malloc(argmax);
- if (NULL == procargs) {
- return PyErr_SetFromErrno(PyExc_OSError);
- }
-
- /* read argument space */
- mib[0] = CTL_KERN;
- mib[1] = KERN_PROCARGS2;
- mib[2] = pid;
- if (sysctl(mib, 3, procargs, &argmax, NULL, 0) < 0) {
- if (EINVAL == errno) { // invalid == access denied OR nonexistent PID
- if ( pid_exists(pid) ) {
- AccessDenied();
- } else {
- NoSuchProcess();
- }
- }
- free(procargs);
- return NULL;
- }
-
- arg_end = &procargs[argmax];
- /* copy the number of arguments to nargs */
- memcpy(&nargs, procargs, sizeof(nargs));
-
- arg_ptr = procargs + sizeof(nargs);
- len = strlen(arg_ptr);
- arg_ptr += len + 1;
-
- if (arg_ptr == arg_end) {
- free(procargs);
- return Py_BuildValue("[]");
- }
-
- // skip ahead to the first argument
- for (; arg_ptr < arg_end; arg_ptr++) {
- if (*arg_ptr != '\0') {
- break;
- }
- }
-
- /* iterate through arguments */
- curr_arg = arg_ptr;
- arglist = Py_BuildValue("[]");
- while (arg_ptr < arg_end && nargs > 0) {
- if (*arg_ptr++ == '\0') {
- arg = Py_BuildValue("s", curr_arg);
- if (NULL == arg) {
- return NULL;
- }
- PyList_Append(arglist, arg);
- Py_DECREF(arg);
- // iterate to next arg and decrement # of args
- curr_arg = arg_ptr;
- nargs--;
- }
- }
-
- free(procargs);
- return arglist;
-}
-
-
-int
-get_kinfo_proc(pid_t pid, struct kinfo_proc *kp)
-{
- int mib[4];
- size_t len;
- mib[0] = CTL_KERN;
- mib[1] = KERN_PROC;
- mib[2] = KERN_PROC_PID;
- mib[3] = pid;
-
- // fetch the info with sysctl()
- len = sizeof(struct kinfo_proc);
-
- // now read the data from sysctl
- if (sysctl(mib, 4, kp, &len, NULL, 0) == -1) {
- // raise an exception and throw errno as the error
- PyErr_SetFromErrno(PyExc_OSError);
- }
-
- /*
- * sysctl succeeds but len is zero, happens when process has gone away
- */
- if (len == 0) {
- NoSuchProcess();
- return -1;
- }
- return 0;
-}
« no previous file with comments | « third_party/psutil/psutil/arch/osx/process_info.h ('k') | third_party/psutil/psutil/error.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698