summaryrefslogtreecommitdiffstats
path: root/dragonflybsd
diff options
context:
space:
mode:
Diffstat (limited to 'dragonflybsd')
-rw-r--r--dragonflybsd/DragonFlyBSDProcess.c24
-rw-r--r--dragonflybsd/DragonFlyBSDProcessList.c25
2 files changed, 29 insertions, 20 deletions
diff --git a/dragonflybsd/DragonFlyBSDProcess.c b/dragonflybsd/DragonFlyBSDProcess.c
index 7cfc71be..a85b6efb 100644
--- a/dragonflybsd/DragonFlyBSDProcess.c
+++ b/dragonflybsd/DragonFlyBSDProcess.c
@@ -66,16 +66,17 @@ void Process_delete(Object* cast) {
free(this);
}
-static void DragonFlyBSDProcess_writeField(const Process* this, RichString* str, ProcessField field) {
+static void DragonFlyBSDProcess_rowWriteField(const Row* super, RichString* str, ProcessField field) {
+ const Process* this = (const Process*) super;
const DragonFlyBSDProcess* fp = (const DragonFlyBSDProcess*) this;
char buffer[256]; buffer[255] = '\0';
int attr = CRT_colors[DEFAULT_COLOR];
size_t n = sizeof(buffer) - 1;
switch (field) {
// add Platform-specific fields here
- case PID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, Process_isKernelThread(this) ? -1 : this->pid); break;
+ case PID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, Process_isKernelThread(this) ? -1 : Process_getPid(this)); break;
case JID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, fp->jid); break;
- case JAIL: Process_printLeftAlignedField(str, attr, fp->jname, 11); return;
+ case JAIL: Row_printLeftAlignedField(str, attr, fp->jname, 11); return;
default:
Process_writeField(this, str, field);
return;
@@ -100,11 +101,18 @@ static int DragonFlyBSDProcess_compareByKey(const Process* v1, const Process* v2
const ProcessClass DragonFlyBSDProcess_class = {
.super = {
- .extends = Class(Process),
- .display = Process_display,
- .delete = Process_delete,
- .compare = Process_compare
+ .super = {
+ .extends = Class(Process),
+ .display = Row_display,
+ .delete = Process_delete,
+ .compare = Process_compare
+ },
+ .isHighlighted = Process_rowIsHighlighted,
+ .isVisible = Process_rowIsVisible,
+ .matchesFilter = Process_rowMatchesFilter,
+ .compareByParent = Process_compareByParent,
+ .sortKeyString = Process_rowGetSortKey,
+ .writeField = DragonFlyBSDProcess_rowWriteField
},
- .writeField = DragonFlyBSDProcess_writeField,
.compareByKey = DragonFlyBSDProcess_compareByKey
};
diff --git a/dragonflybsd/DragonFlyBSDProcessList.c b/dragonflybsd/DragonFlyBSDProcessList.c
index 4ff17932..6330e911 100644
--- a/dragonflybsd/DragonFlyBSDProcessList.c
+++ b/dragonflybsd/DragonFlyBSDProcessList.c
@@ -28,16 +28,17 @@ in the source distribution for its full text.
ProcessList* ProcessList_new(Machine* host, Hashtable* pidMatchList) {
DragonFlyBSDProcessList* this = xCalloc(1, sizeof(DragonFlyBSDProcessList));
- ProcessList* super = (ProcessList*) this;
+ Object_setClass(this, Class(ProcessList));
+ ProcessList* super = (ProcessList*) this;
ProcessList_init(super, Class(DragonFlyBSDProcess), host, pidMatchList);
return super;
}
-void ProcessList_delete(ProcessList* super) {
- const DragonFlyBSDProcessList* this = (DragonFlyBSDProcessList*) super;
- ProcessList_done(super);
+void ProcessList_delete(Object* cast) {
+ const DragonFlyBSDProcessList* this = (DragonFlyBSDProcessList*) cast;
+ ProcessList_done(&this->super);
free(this);
}
@@ -153,17 +154,17 @@ void ProcessList_goThroughEntries(ProcessList* super) {
dfp->jid = kproc->kp_jailid;
if (kproc->kp_ktaddr && kproc->kp_flags & P_SYSTEM) {
// dfb kernel threads all have the same pid, so we misuse the kernel thread address to give them a unique identifier
- proc->pid = (pid_t)kproc->kp_ktaddr;
+ Process_setPid(proc, (pid_t)kproc->kp_ktaddr);
proc->isKernelThread = true;
} else {
- proc->pid = kproc->kp_pid; // process ID
+ Process_setPid(proc, kproc->kp_pid); // process ID
proc->isKernelThread = false;
}
proc->isUserlandThread = kproc->kp_nthreads > 1;
- proc->ppid = kproc->kp_ppid; // parent process id
+ Process_setParent(proc, kproc->kp_ppid); // parent process id
proc->tpgid = kproc->kp_tpgid; // tty process group id
- //proc->tgid = kproc->kp_lwp.kl_tid; // thread group id
- proc->tgid = kproc->kp_pid; // thread group id
+ //Process_setThreadGroup(proc, kproc->kp_lwp.kl_tid); // thread group id
+ Process_setThreadGroup(proc, kproc->kp_pid);
proc->pgrp = kproc->kp_pgid; // process group id
proc->session = kproc->kp_sid;
proc->st_uid = kproc->kp_uid; // user ID
@@ -199,7 +200,7 @@ void ProcessList_goThroughEntries(ProcessList* super) {
dfp->jname = DragonFlyBSDMachine_readJailName(dhost, kproc->kp_jailid);
}
// if there are reapers in the system, process can get reparented anytime
- proc->ppid = kproc->kp_ppid;
+ Process_setParent(proc, kproc->kp_ppid);
if (proc->st_uid != kproc->kp_uid) { // some processes change users (eg. to lower privs)
proc->st_uid = kproc->kp_uid;
proc->user = UsersTable_getRef(host->usersTable, proc->st_uid);
@@ -303,7 +304,7 @@ void ProcessList_goThroughEntries(ProcessList* super) {
if (proc->state == RUNNING)
super->runningTasks++;
- proc->show = ! ((hideKernelThreads && Process_isKernelThread(proc)) || (hideUserlandThreads && Process_isUserlandThread(proc)));
- proc->updated = true;
+ proc->super.show = ! ((hideKernelThreads && Process_isKernelThread(proc)) || (hideUserlandThreads && Process_isUserlandThread(proc)));
+ proc->super.updated = true;
}
}