| Index: third_party/psutil/psutil/_psutil_linux.c
|
| diff --git a/third_party/psutil/psutil/_psutil_linux.c b/third_party/psutil/psutil/_psutil_linux.c
|
| deleted file mode 100644
|
| index 6915c0c81e4fac43ec4f9db7b8d48ebe9bd2a36f..0000000000000000000000000000000000000000
|
| --- a/third_party/psutil/psutil/_psutil_linux.c
|
| +++ /dev/null
|
| @@ -1,211 +0,0 @@
|
| -/*
|
| - * $Id: _psutil_linux.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.
|
| - *
|
| - * Linux-specific functions.
|
| - */
|
| -
|
| -#include <Python.h>
|
| -#include <errno.h>
|
| -#include <stdlib.h>
|
| -#include <mntent.h>
|
| -#include <sys/syscall.h>
|
| -#include <linux/unistd.h>
|
| -
|
| -#include "_psutil_linux.h"
|
| -
|
| -
|
| -#define HAS_IOPRIO defined(__NR_ioprio_get) && defined(__NR_ioprio_set)
|
| -
|
| -#if HAS_IOPRIO
|
| -enum {
|
| - IOPRIO_WHO_PROCESS = 1,
|
| -};
|
| -
|
| -static inline int
|
| -ioprio_get(int which, int who)
|
| -{
|
| - return syscall(__NR_ioprio_get, which, who);
|
| -}
|
| -
|
| -static inline int
|
| -ioprio_set(int which, int who, int ioprio)
|
| -{
|
| - return syscall(__NR_ioprio_set, which, who, ioprio);
|
| -}
|
| -
|
| -#define IOPRIO_CLASS_SHIFT 13
|
| -#define IOPRIO_PRIO_MASK ((1UL << IOPRIO_CLASS_SHIFT) - 1)
|
| -
|
| -#define IOPRIO_PRIO_CLASS(mask) ((mask) >> IOPRIO_CLASS_SHIFT)
|
| -#define IOPRIO_PRIO_DATA(mask) ((mask) & IOPRIO_PRIO_MASK)
|
| -#define IOPRIO_PRIO_VALUE(class, data) (((class) << IOPRIO_CLASS_SHIFT) | data)
|
| -
|
| -
|
| -/*
|
| - * Return a (ioclass, iodata) Python tuple representing process I/O priority.
|
| - */
|
| -static PyObject*
|
| -linux_ioprio_get(PyObject* self, PyObject* args)
|
| -{
|
| - long pid;
|
| - int ioprio, ioclass, iodata;
|
| - if (! PyArg_ParseTuple(args, "l", &pid)) {
|
| - return NULL;
|
| - }
|
| - ioprio = ioprio_get(IOPRIO_WHO_PROCESS, pid);
|
| - if (ioprio == -1) {
|
| - return PyErr_SetFromErrno(PyExc_OSError);
|
| - }
|
| - ioclass = IOPRIO_PRIO_CLASS(ioprio);
|
| - iodata = IOPRIO_PRIO_DATA(ioprio);
|
| - return Py_BuildValue("ii", ioclass, iodata);
|
| -}
|
| -
|
| -
|
| -/*
|
| - * A wrapper around ioprio_set(); sets process I/O priority.
|
| - * ioclass can be either IOPRIO_CLASS_RT, IOPRIO_CLASS_BE, IOPRIO_CLASS_IDLE
|
| - * or 0. iodata goes from 0 to 7 depending on ioclass specified.
|
| - */
|
| -static PyObject*
|
| -linux_ioprio_set(PyObject* self, PyObject* args)
|
| -{
|
| - long pid;
|
| - int ioprio, ioclass, iodata;
|
| - int retval;
|
| -
|
| - if (! PyArg_ParseTuple(args, "lii", &pid, &ioclass, &iodata)) {
|
| - return NULL;
|
| - }
|
| - ioprio = IOPRIO_PRIO_VALUE(ioclass, iodata);
|
| - retval = ioprio_set(IOPRIO_WHO_PROCESS, pid, ioprio);
|
| - if (retval == -1) {
|
| - return PyErr_SetFromErrno(PyExc_OSError);
|
| - }
|
| - Py_INCREF(Py_None);
|
| - return Py_None;
|
| -}
|
| -#endif
|
| -
|
| -
|
| -/*
|
| - * Return disk mounted partitions as a list of tuples including device,
|
| - * mount point and filesystem type
|
| - */
|
| -static PyObject*
|
| -get_disk_partitions(PyObject* self, PyObject* args)
|
| -{
|
| - FILE *file;
|
| - struct mntent *entry;
|
| - PyObject* py_retlist = PyList_New(0);
|
| - PyObject* py_tuple;
|
| -
|
| - // MOUNTED constant comes from mntent.h and it's == '/etc/mtab'
|
| - Py_BEGIN_ALLOW_THREADS
|
| - file = setmntent(MOUNTED, "r");
|
| - Py_END_ALLOW_THREADS
|
| - if ((file == 0) || (file == NULL)) {
|
| - return PyErr_SetFromErrno(PyExc_OSError);
|
| - }
|
| -
|
| - while ((entry = getmntent(file))) {
|
| - if (entry == NULL) {
|
| - endmntent(file);
|
| - return PyErr_Format(PyExc_RuntimeError, "getmntent() failed");
|
| - }
|
| - py_tuple = Py_BuildValue("(sss)", entry->mnt_fsname, // device
|
| - entry->mnt_dir, // mount point
|
| - entry->mnt_type); // fs type
|
| - PyList_Append(py_retlist, py_tuple);
|
| - Py_XDECREF(py_tuple);
|
| - }
|
| -
|
| - endmntent(file);
|
| - return py_retlist;
|
| -}
|
| -
|
| -
|
| -/*
|
| - * Define the psutil C module methods and initialize the module.
|
| - */
|
| -static PyMethodDef
|
| -PsutilMethods[] =
|
| -{
|
| -#if HAS_IOPRIO
|
| - {"ioprio_get", linux_ioprio_get, METH_VARARGS,
|
| - "Get process I/O priority"},
|
| - {"ioprio_set", linux_ioprio_set, METH_VARARGS,
|
| - "Set process I/O priority"},
|
| -#endif
|
| - {"get_disk_partitions", get_disk_partitions, METH_VARARGS,
|
| - "Return disk mounted partitions as a list of tuples including "
|
| - "device, mount point and filesystem type"},
|
| -
|
| - {NULL, NULL, 0, NULL}
|
| -};
|
| -
|
| -struct module_state {
|
| - PyObject *error;
|
| -};
|
| -
|
| -#if PY_MAJOR_VERSION >= 3
|
| -#define GETSTATE(m) ((struct module_state*)PyModule_GetState(m))
|
| -#else
|
| -#define GETSTATE(m) (&_state)
|
| -#endif
|
| -
|
| -#if PY_MAJOR_VERSION >= 3
|
| -
|
| -static int
|
| -psutil_linux_traverse(PyObject *m, visitproc visit, void *arg) {
|
| - Py_VISIT(GETSTATE(m)->error);
|
| - return 0;
|
| -}
|
| -
|
| -static int
|
| -psutil_linux_clear(PyObject *m) {
|
| - Py_CLEAR(GETSTATE(m)->error);
|
| - return 0;
|
| -}
|
| -
|
| -static struct PyModuleDef
|
| -moduledef = {
|
| - PyModuleDef_HEAD_INIT,
|
| - "psutil_linux",
|
| - NULL,
|
| - sizeof(struct module_state),
|
| - PsutilMethods,
|
| - NULL,
|
| - psutil_linux_traverse,
|
| - psutil_linux_clear,
|
| - NULL
|
| -};
|
| -
|
| -#define INITERROR return NULL
|
| -
|
| -PyObject *
|
| -PyInit__psutil_linux(void)
|
| -
|
| -#else
|
| -#define INITERROR return
|
| -
|
| -void init_psutil_linux(void)
|
| -#endif
|
| -{
|
| -#if PY_MAJOR_VERSION >= 3
|
| - PyObject *module = PyModule_Create(&moduledef);
|
| -#else
|
| - PyObject *module = Py_InitModule("_psutil_linux", PsutilMethods);
|
| -#endif
|
| - if (module == NULL) {
|
| - INITERROR;
|
| - }
|
| -#if PY_MAJOR_VERSION >= 3
|
| - return module;
|
| -#endif
|
| -}
|
| -
|
|
|