diff options
author | Christian Göttsche <cgzones@googlemail.com> | 2023-01-10 19:40:04 +0100 |
---|---|---|
committer | BenBE <BenBE@geshi.org> | 2023-02-05 00:17:33 +0100 |
commit | da494896914a327476ab7e0298619d742a6205d4 (patch) | |
tree | 700db7b14d148c492b1fb0295462fee2214239ed /freebsd | |
parent | f1da8cfa28cce46cc7a4ab1661be35e2173155ab (diff) |
Add support for scheduling policies
Add a process column for scheduling policy to show the current
scheduling policy of the process.
Add a the ability to change the scheduling policy of a process via the
key 'Y'.
Currently implemented on Linux and FreeBSD only but should be portable,
since sched_getscheduler(2) is part of POSIX.1-2001.
Closes: #1161
Diffstat (limited to 'freebsd')
-rw-r--r-- | freebsd/FreeBSDProcess.c | 4 | ||||
-rw-r--r-- | freebsd/FreeBSDProcessList.c | 6 |
2 files changed, 10 insertions, 0 deletions
diff --git a/freebsd/FreeBSDProcess.c b/freebsd/FreeBSDProcess.c index 4eccfe7f..90bc1f2c 100644 --- a/freebsd/FreeBSDProcess.c +++ b/freebsd/FreeBSDProcess.c @@ -13,6 +13,7 @@ in the source distribution for its full text. #include "Macros.h" #include "Process.h" #include "RichString.h" +#include "Scheduling.h" #include "XUtils.h" @@ -47,6 +48,9 @@ const ProcessFieldData Process_fields[LAST_PROCESSFIELD] = { [PROC_COMM] = { .name = "COMM", .title = "COMM ", .description = "comm string of the process", .flags = 0, }, [PROC_EXE] = { .name = "EXE", .title = "EXE ", .description = "Basename of exe of the process", .flags = 0, }, [CWD] = { .name = "CWD", .title = "CWD ", .description = "The current working directory of the process", .flags = PROCESS_FLAG_CWD, }, +#ifdef SCHEDULER_SUPPORT + [SCHEDULERPOLICY] = { .name = "SCHEDULERPOLICY", .title = "SCHED ", .description = "Current scheduling policy of the process", .flags = PROCESS_FLAG_SCHEDPOL, }, +#endif [JID] = { .name = "JID", .title = "JID", .description = "Jail prison ID", .flags = 0, .pidColumn = true, }, [JAIL] = { .name = "JAIL", .title = "JAIL ", .description = "Jail prison name", .flags = 0, }, [EMULATION] = { .name = "EMULATION", .title = "EMULATION ", .description = "System call emulation environment (ABI)", .flags = 0, }, diff --git a/freebsd/FreeBSDProcessList.c b/freebsd/FreeBSDProcessList.c index 9ee5ea40..98447df9 100644 --- a/freebsd/FreeBSDProcessList.c +++ b/freebsd/FreeBSDProcessList.c @@ -34,6 +34,7 @@ in the source distribution for its full text. #include "Object.h" #include "Process.h" #include "ProcessList.h" +#include "Scheduling.h" #include "Settings.h" #include "XUtils.h" #include "generic/openzfs_sysctl.h" @@ -606,6 +607,11 @@ void ProcessList_goThroughEntries(ProcessList* super, bool pauseProcessUpdate) { if (Process_isKernelThread(proc)) super->kernelThreads++; +#ifdef SCHEDULER_SUPPORT + if (settings->ss->flags & PROCESS_FLAG_SCHEDPOL) + Scheduling_readProcessPolicy(proc); +#endif + proc->show = ! ((hideKernelThreads && Process_isKernelThread(proc)) || (hideUserlandThreads && Process_isUserlandThread(proc))); super->totalTasks++; |