aboutsummaryrefslogtreecommitdiffstats
path: root/solaris/SolarisProcess.c
diff options
context:
space:
mode:
Diffstat (limited to 'solaris/SolarisProcess.c')
-rw-r--r--solaris/SolarisProcess.c38
1 files changed, 25 insertions, 13 deletions
diff --git a/solaris/SolarisProcess.c b/solaris/SolarisProcess.c
index 840757e..449861b 100644
--- a/solaris/SolarisProcess.c
+++ b/solaris/SolarisProcess.c
@@ -6,6 +6,8 @@ Released under the GNU GPLv2+, see the COPYING file
in the source distribution for its full text.
*/
+#include "config.h" // IWYU pragma: keep
+
#include "solaris/SolarisProcess.h"
#include <stdlib.h>
@@ -14,7 +16,7 @@ in the source distribution for its full text.
#include <sys/syscall.h>
#include "Process.h"
-#include "ProcessList.h"
+#include "ProcessTable.h"
#include "CRT.h"
#include "solaris/Platform.h"
@@ -59,10 +61,10 @@ const ProcessFieldData Process_fields[LAST_PROCESSFIELD] = {
[LWPID] = { .name = "LWPID", .title = "LWPID", .description = "LWP ID", .flags = 0, .pidColumn = true, },
};
-Process* SolarisProcess_new(const Settings* settings) {
+Process* SolarisProcess_new(const Machine* host) {
SolarisProcess* this = xCalloc(1, sizeof(SolarisProcess));
Object_setClass(this, Class(SolarisProcess));
- Process_init(&this->super, settings);
+ Process_init(&this->super, host);
return &this->super;
}
@@ -73,11 +75,13 @@ void Process_delete(Object* cast) {
free(sp);
}
-static void SolarisProcess_writeField(const Process* this, RichString* str, ProcessField field) {
- const SolarisProcess* sp = (const SolarisProcess*) this;
+static void SolarisProcess_rowWriteField(const Row* super, RichString* str, ProcessField field) {
+ const SolarisProcess* sp = (const SolarisProcess*) super;
+
char buffer[256]; buffer[255] = '\0';
int attr = CRT_colors[DEFAULT_COLOR];
- int n = sizeof(buffer) - 1;
+ size_t n = sizeof(buffer) - 1;
+
switch (field) {
// add Solaris-specific fields here
case ZONEID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, sp->zoneid); break;
@@ -85,15 +89,16 @@ static void SolarisProcess_writeField(const Process* this, RichString* str, Proc
case TASKID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, sp->taskid); break;
case POOLID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, sp->poolid); break;
case CONTID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, sp->contid); break;
- case ZONE: Process_printLeftAlignedField(str, attr, sp->zname ? sp->zname : "global", ZONENAME_MAX/4); return;
+ case ZONE: Row_printLeftAlignedField(str, attr, sp->zname ? sp->zname : "global", ZONENAME_MAX/4); return;
case PID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, sp->realpid); break;
case PPID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, sp->realppid); break;
case TGID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, sp->realtgid); break;
case LWPID: xSnprintf(buffer, n, "%*d ", Process_pidDigits, sp->lwpid); break;
default:
- Process_writeField(this, str, field);
+ Process_writeField(&sp->super, str, field);
return;
}
+
RichString_appendWide(str, attr, buffer);
}
@@ -127,11 +132,18 @@ static int SolarisProcess_compareByKey(const Process* v1, const Process* v2, Pro
const ProcessClass SolarisProcess_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 = SolarisProcess_rowWriteField
},
- .writeField = SolarisProcess_writeField,
.compareByKey = SolarisProcess_compareByKey
};

© 2014-2024 Faster IT GmbH | imprint | privacy policy