summaryrefslogtreecommitdiff
path: root/iotop/_ioprio.c
blob: ce8ae6cdbe42da520f22658427a7dc2e0a697de4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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;
}