CAMLprim value netsys_ioprio_get(value target) { #ifdef ioprio_supported int ioprio; int ioprio_class; int ioprio_data; value result; switch (Tag_val(target)) { case 0: ioprio = ioprio_get(IOPRIO_WHO_PROCESS, Int_val(Field(target, 0))); break; case 1: ioprio = ioprio_get(IOPRIO_WHO_PGRP, Int_val(Field(target, 0))); break; case 2: ioprio = ioprio_get(IOPRIO_WHO_USER, Int_val(Field(target, 0))); break; default: failwith("netsys_ioprio_get: internal error"); } if (ioprio == -1) uerror("ioprio_get", Nothing); ioprio_class = ioprio >> IOPRIO_CLASS_SHIFT; ioprio_data = ioprio & IOPRIO_PRIO_MASK; switch (ioprio_class) { case IOPRIO_CLASS_NONE: result = Val_long(0); break; case IOPRIO_CLASS_RT: result = caml_alloc(1, 0); Store_field(result, 0, Val_int(ioprio_data)); break; case IOPRIO_CLASS_BE: result = caml_alloc(1, 1); Store_field(result, 0, Val_int(ioprio_data)); break; case IOPRIO_CLASS_IDLE: result = Val_long(1); break; default: failwith("netsys_ioprio_get: Unexpected result"); } return result; #else /* not ioprio_supported: */ unix_error(ENOSYS, "ioprio_get", Nothing); #endif /* ioprio_supported */ }
int main (int argc, char *argv[]) { int ioprio = 4, set = 0, ioprio_class = IOPRIO_CLASS_BE; int c, pid = 0; while ((c = getopt (argc, argv, "+n:c:p:V")) != EOF) { switch (c) { case 'n': ioprio = strtol (optarg, NULL, 10); set = 1; break; case 'c': ioprio_class = strtol (optarg, NULL, 10); set = 1; break; case 'p': pid = strtol (optarg, NULL, 10); break; case 'V': printf ("ionice version " VERSION "\n"); return 0; } } switch (ioprio_class) { case IOPRIO_CLASS_NONE: ioprio_class = IOPRIO_CLASS_BE; break; case IOPRIO_CLASS_RT: case IOPRIO_CLASS_BE: break; case IOPRIO_CLASS_IDLE: ioprio = 7; break; default: fprintf (stderr, "invalid class %d!\n", ioprio_class); return 1; } if (!set) { if (!pid && argv[optind]) pid = strtol (argv[optind], NULL, 10); ioprio = ioprio_get (IOPRIO_WHO_PROCESS, pid); if (ioprio == -1) perror ("ioprio_get"); else { ioprio_class = ioprio >> IOPRIO_CLASS_SHIFT; ioprio = ioprio & IOPRIO_PRIO_MASK; printf ("%s: prio %d\n", to_prio[ioprio_class], ioprio); } } else { if (ioprio_set (IOPRIO_WHO_PROCESS, pid, ioprio | ioprio_class
void printIoPrio() { int pid = 0, ioprio = ioprio_get(IOPRIO_WHO_PROCESS, pid); eDebug("pid=%d, %d", pid, ioprio); if (ioprio == -1) eDebug("ioprio_get(%m)"); else { int ioprio_class = ioprio >> IOPRIO_CLASS_SHIFT; ioprio = ioprio & 0xff; eDebug("%s: prio %d", to_prio[ioprio_class], ioprio); } }
/* * Return a (ioclass, iodata) Python tuple representing process I/O priority. */ static PyObject* linux_ioprio_get(PyObject* self, PyObject* args) { long pid; int ioprio, ioclass, iodata; if (! PyArg_ParseTuple(args, "l", &pid)) { return NULL; } ioprio = ioprio_get(IOPRIO_WHO_PROCESS, pid); if (ioprio == -1) { return PyErr_SetFromErrno(PyExc_OSError); } ioclass = IOPRIO_PRIO_CLASS(ioprio); iodata = IOPRIO_PRIO_DATA(ioprio); return Py_BuildValue("ii", ioclass, iodata); }
static void ioprio_print(int pid) { int ioprio, ioclass; ioprio = ioprio_get(IOPRIO_WHO_PROCESS, pid); if (ioprio == -1) err(EXIT_FAILURE, _("ioprio_get failed")); else { ioclass = ioprio >> IOPRIO_CLASS_SHIFT; if (ioclass != IOPRIO_CLASS_IDLE) { ioprio = ioprio & 0xff; printf("%s: prio %d\n", to_prio[ioclass], ioprio); } else printf("%s\n", to_prio[ioclass]); } }
static void ioprio_print(int pid) { int ioprio = ioprio_get(IOPRIO_WHO_PROCESS, pid); if (ioprio == -1) err(EXIT_FAILURE, _("ioprio_get failed")); else { int ioclass = IOPRIO_PRIO_CLASS(ioprio); const char *name = _("unknown"); if (ioclass > 0 && (size_t) ioclass < ARRAY_SIZE(to_prio)) name = to_prio[ioclass]; if (ioclass != IOPRIO_CLASS_IDLE) printf(_("%s: prio %lu\n"), name, IOPRIO_PRIO_DATA(ioprio)); else printf("%s\n", name); } }