X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=python%2F_libvserver.c;h=d433d4b983b716e9b895f423d818b846390a0490;hb=d76191e6b008d6f0e76b23a3b24f915e690144b4;hp=3404c9de9857389f5a7a12a189a3a82596f0a0b7;hpb=9cd5375cdc1c902da2e6a5cb70d01934a6b71d22;p=util-vserver.git diff --git a/python/_libvserver.c b/python/_libvserver.c index 3404c9d..d433d4b 100644 --- a/python/_libvserver.c +++ b/python/_libvserver.c @@ -1,4 +1,4 @@ -/* +/* $Id$ * Copyright (C) 2008 Daniel Hokka Zakrisson * * This program is free software; you can redistribute it and/or @@ -39,7 +39,6 @@ static inline PyObject *NONE(void) } static PyObject * - pyvserver_get_version(PyObject UNUSED *self, PyObject UNUSED *args) { int ver = vc_get_version(); @@ -120,7 +119,7 @@ pyvserver_virt_stat(PyObject UNUSED *self, PyObject *args) if (vc_virt_stat(xid, &stats) == -1) return PyErr_SetFromErrno(PyExc_OSError); - return Py_BuildValue("(KKIIIII(III))", stats.offset, stats.uptime, + return Py_BuildValue("(KKIIIIIIII)", stats.offset, stats.uptime, stats.nr_threads, stats.nr_running, stats.nr_uninterruptible, stats.nr_onhold, stats.nr_forks, stats.load[0], stats.load[1], @@ -164,7 +163,7 @@ pyvserver_set_cflags(PyObject UNUSED *self, PyObject *args) xid_t xid; struct vc_ctx_flags flags; - if (!PyArg_ParseTuple(args, "I(KK)", &xid, flags.flagword, flags.mask)) + if (!PyArg_ParseTuple(args, "I(KK)", &xid, &flags.flagword, &flags.mask)) return NULL; if (vc_set_cflags(xid, &flags) == -1) @@ -278,7 +277,7 @@ pyvserver_get_rlimit(PyObject UNUSED *self, PyObject *args) if (vc_get_rlimit(xid, resource, &limit) == -1) return PyErr_SetFromErrno(PyExc_OSError); - return Py_BuildValue("(KKK)", limit.min, limit.soft, limit.hard); + return Py_BuildValue("(LLL)", limit.min, limit.soft, limit.hard); } static PyObject * @@ -607,11 +606,12 @@ pyvserver_enter_namespace(PyObject UNUSED *self, PyObject *args) { xid_t xid; uint_least64_t mask; + uint32_t index; - if (!PyArg_ParseTuple(args, "IK", &xid, &mask)) + if (!PyArg_ParseTuple(args, "IKI", &xid, &mask, &index)) return NULL; - if (vc_enter_namespace(xid, mask) == -1) + if (vc_enter_namespace(xid, mask, index) == -1) return PyErr_SetFromErrno(PyExc_OSError); return NONE(); @@ -622,11 +622,12 @@ pyvserver_set_namespace(PyObject UNUSED *self, PyObject *args) { xid_t xid; uint_least64_t mask; + uint32_t index; - if (!PyArg_ParseTuple(args, "IK", &xid, &mask)) + if (!PyArg_ParseTuple(args, "IKI", &xid, &mask, &index)) return NULL; - if (vc_set_namespace(xid, mask) == -1) + if (vc_set_namespace(xid, mask, index) == -1) return PyErr_SetFromErrno(PyExc_OSError); return NONE(); @@ -785,7 +786,7 @@ pyvserver_get_sched(PyObject UNUSED *self, PyObject *args) xid_t xid; struct vc_set_sched sched; - if (!PyArg_ParseTuple(args, "I", &xid)) + if (!PyArg_ParseTuple(args, "Iii", &xid, &sched.cpu_id, &sched.bucket_id)) return NULL; if (vc_get_sched(xid, &sched) == -1) @@ -1023,7 +1024,7 @@ pyvserver_list2 ## name(PyObject UNUSED *self, PyObject *args) \ char const *str; \ int len; \ struct vc_err_listparser err; \ - list_type val; \ + list_type val = { .mask_member = 0 }; \ \ if (!PyArg_ParseTuple(args, "s#", &str, &len)) \ return NULL; \ @@ -1126,6 +1127,15 @@ static PyMethodDef methods[] = { { NULL, NULL, 0, NULL } }; +static void +PyModule_AddLongLongConstant(PyObject *mod, const char *str, long long val) +{ + PyObject *o = PyLong_FromLongLong(val); + if (!o || PyModule_AddObject(mod, str, o) == -1) + /* This ought to be reported somehow... */ + return; +} + PyMODINIT_FUNC init_libvserver(void) { PyObject *mod;