12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /*
- * Copyright (c) 2009, 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.
- */
- #ifndef _GNU_SOURCE
- #define _GNU_SOURCE 1
- #endif
- #include <Python.h>
- #include <linux/ethtool.h> // DUPLEX_*
- #include "_psutil_common.h"
- #include "arch/linux/disk.h"
- #include "arch/linux/mem.h"
- #include "arch/linux/net.h"
- #include "arch/linux/proc.h"
- #include "arch/linux/users.h"
- static PyMethodDef mod_methods[] = {
- // --- per-process functions
- #ifdef PSUTIL_HAVE_IOPRIO
- {"proc_ioprio_get", psutil_proc_ioprio_get, METH_VARARGS},
- {"proc_ioprio_set", psutil_proc_ioprio_set, METH_VARARGS},
- #endif
- #ifdef PSUTIL_HAVE_CPU_AFFINITY
- {"proc_cpu_affinity_get", psutil_proc_cpu_affinity_get, METH_VARARGS},
- {"proc_cpu_affinity_set", psutil_proc_cpu_affinity_set, METH_VARARGS},
- #endif
- // --- system related functions
- {"disk_partitions", psutil_disk_partitions, METH_VARARGS},
- {"users", psutil_users, METH_VARARGS},
- {"net_if_duplex_speed", psutil_net_if_duplex_speed, METH_VARARGS},
- // --- linux specific
- {"linux_sysinfo", psutil_linux_sysinfo, METH_VARARGS},
- // --- others
- {"check_pid_range", psutil_check_pid_range, METH_VARARGS},
- {"set_debug", psutil_set_debug, METH_VARARGS},
- {NULL, NULL, 0, NULL}
- };
- // May happen on old RedHat versions, see:
- // https://github.com/giampaolo/psutil/issues/607
- #ifndef DUPLEX_UNKNOWN
- #define DUPLEX_UNKNOWN 0xff
- #endif
- #if PY_MAJOR_VERSION >= 3
- #define INITERR return NULL
- static struct PyModuleDef moduledef = {
- PyModuleDef_HEAD_INIT,
- "_psutil_linux",
- NULL,
- -1,
- mod_methods,
- NULL,
- NULL,
- NULL,
- NULL
- };
- PyObject *PyInit__psutil_linux(void)
- #else /* PY_MAJOR_VERSION */
- #define INITERR return
- void init_psutil_linux(void)
- #endif /* PY_MAJOR_VERSION */
- {
- #if PY_MAJOR_VERSION >= 3
- PyObject *mod = PyModule_Create(&moduledef);
- #else
- PyObject *mod = Py_InitModule("_psutil_linux", mod_methods);
- #endif
- if (mod == NULL)
- INITERR;
- #ifdef Py_GIL_DISABLED
- PyUnstable_Module_SetGIL(mod, Py_MOD_GIL_NOT_USED);
- #endif
- if (PyModule_AddIntConstant(mod, "version", PSUTIL_VERSION)) INITERR;
- if (PyModule_AddIntConstant(mod, "DUPLEX_HALF", DUPLEX_HALF)) INITERR;
- if (PyModule_AddIntConstant(mod, "DUPLEX_FULL", DUPLEX_FULL)) INITERR;
- if (PyModule_AddIntConstant(mod, "DUPLEX_UNKNOWN", DUPLEX_UNKNOWN)) INITERR;
- psutil_setup();
- if (mod == NULL)
- INITERR;
- #if PY_MAJOR_VERSION >= 3
- return mod;
- #endif
- }
|