htop/linux/IOPriorityPanel.c

42 lines
1.6 KiB
C
Raw Normal View History

2012-10-04 23:59:45 +00:00
/*
htop - IOPriorityPanel.c
(C) 2004-2012 Hisham H. Muhammad
Released under the GNU GPLv2, see the COPYING file
2012-10-04 23:59:45 +00:00
in the source distribution for its full text.
*/
#include "IOPriorityPanel.h"
2020-10-14 18:21:09 +00:00
#include "XUtils.h"
2012-10-04 23:59:45 +00:00
Panel* IOPriorityPanel_new(IOPriority currPrio) {
2015-03-23 22:24:34 +00:00
Panel* this = Panel_new(1, 1, 1, 1, true, Class(ListItem), FunctionBar_newEnterEsc("Set ", "Cancel "));
2012-10-04 23:59:45 +00:00
Panel_setHeader(this, "IO Priority:");
Panel_add(this, (Object*) ListItem_new("None (based on nice)", IOPriority_None));
if (currPrio == IOPriority_None) Panel_setSelected(this, 0);
static const struct { int klass; const char* name; } classes[] = {
2012-10-04 23:59:45 +00:00
{ .klass = IOPRIO_CLASS_RT, .name = "Realtime" },
{ .klass = IOPRIO_CLASS_BE, .name = "Best-effort" },
{ .klass = 0, .name = NULL }
};
for (int c = 0; classes[c].name; c++) {
for (int i = 0; i < 8; i++) {
char name[50];
xSnprintf(name, sizeof(name)-1, "%s %d %s", classes[c].name, i, i == 0 ? "(High)" : (i == 7 ? "(Low)" : ""));
2012-10-04 23:59:45 +00:00
IOPriority ioprio = IOPriority_tuple(classes[c].klass, i);
Panel_add(this, (Object*) ListItem_new(name, ioprio));
if (currPrio == ioprio) Panel_setSelected(this, Panel_size(this) - 1);
}
}
Panel_add(this, (Object*) ListItem_new("Idle", IOPriority_Idle));
if (currPrio == IOPriority_Idle) Panel_setSelected(this, Panel_size(this) - 1);
return this;
}
IOPriority IOPriorityPanel_getIOPriority(Panel* this) {
const ListItem* selected = (ListItem*) Panel_getSelected(this);
return selected ? selected->key : IOPriority_None;
2012-10-04 23:59:45 +00:00
}