summaryrefslogtreecommitdiff
path: root/iotop/_ioprio.c
diff options
context:
space:
mode:
Diffstat (limited to 'iotop/_ioprio.c')
-rw-r--r--iotop/_ioprio.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/iotop/_ioprio.c b/iotop/_ioprio.c
new file mode 100644
index 0000000..ce8ae6c
--- /dev/null
+++ b/iotop/_ioprio.c
@@ -0,0 +1,55 @@
+#include <sys/syscall.h>
+#include <Python.h>
+
+#if PY_MAJOR_VERSION < 2 || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION <= 3)
+#define NO_METHODS NoMethods
+static PyMethodDef NoMethods[] = {
+ {NULL, NULL, 0, NULL}
+};
+#else
+#define NO_METHODS NULL
+#endif
+
+#if PY_MAJOR_VERSION >= 3
+PyDoc_STRVAR(doc, "SYS_ioprio_get and SYS_ioprio_set for syscalls");
+static struct PyModuleDef mod = {
+ PyModuleDef_HEAD_INIT,
+ "_ioprio",
+ doc,
+ -1,
+ NO_METHODS,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+#define INIT_FUNC PyInit__ioprio
+#define INIT_MOD PyModule_Create(&mod)
+#define INIT_ERR NULL
+#define INIT_RET return m
+#else
+#define INIT_FUNC init_ioprio
+#define INIT_MOD Py_InitModule("_ioprio", NO_METHODS)
+#define INIT_ERR
+#define INIT_RET
+#endif // PY_MAJOR_VERSION >= 3
+
+PyMODINIT_FUNC INIT_FUNC(void)
+{
+ PyObject *m = INIT_MOD;
+
+ if (m == NULL) {
+ return INIT_ERR;
+ }
+
+#ifdef SYS_ioprio_get
+ PyModule_AddIntConstant(m, "SYS_ioprio_get", SYS_ioprio_get);
+#endif
+
+#ifdef SYS_ioprio_set
+ PyModule_AddIntConstant(m, "SYS_ioprio_set", SYS_ioprio_set);
+#endif
+
+ INIT_RET;
+}