PyErr_SetString(PyExc_TypeError, "invalid rspec");
return -1;
}
- if ((cpu_share = PyMapping_GetItemString(resources, "nm_cpu_share")) &&
- (cpu_share = PyNumber_Int(cpu_share)))
- rspec->cpu_share = PyInt_AsLong(cpu_share);
+ if ((cpu_share = PyMapping_GetItemString(resources, "nm_cpu_share")))
+ {
+ if (PyInt_Check(cpu_share))
+ {
+ rspec->cpu_share = PyInt_AS_LONG(cpu_share);
+ return 0;
+ }
+ PyErr_SetString(PyExc_TypeError, "nm_cpu_share not an integer");
+ }
- return 0;
+ return -1;
}
/*
get_rspec(resources, &rspec))
return NULL;
- if (pl_setsched(ctx, rspec.cpu_share, rspec.cpu_sched_flags))
+ /* ESRCH indicates that there are no processes in the context */
+ if (pl_setsched(ctx, rspec.cpu_share, rspec.cpu_sched_flags) &&
+ errno != ESRCH)
return PyErr_SetFromErrno(PyExc_OSError);
return Py_None;