summaryrefslogtreecommitdiffstats
path: root/dragonflybsd
diff options
context:
space:
mode:
authorBenny Baumann <BenBE@geshi.org>2021-04-10 14:08:26 +0200
committerBenBE <BenBE@geshi.org>2021-05-23 09:22:21 +0200
commit7224d0e0831ee53d5028915f87dffd51ffa0d6fa (patch)
treec193e41f03dd30cf414d427c5e4e71b127842d98 /dragonflybsd
parent1a1fddae851b344b0a89a8f2753e2d2487f34064 (diff)
Move kernel/userland thread handling to platform-independent implementation
Diffstat (limited to 'dragonflybsd')
-rw-r--r--dragonflybsd/DragonFlyBSDProcess.c10
-rw-r--r--dragonflybsd/DragonFlyBSDProcess.h8
-rw-r--r--dragonflybsd/DragonFlyBSDProcessList.c7
3 files changed, 4 insertions, 21 deletions
diff --git a/dragonflybsd/DragonFlyBSDProcess.c b/dragonflybsd/DragonFlyBSDProcess.c
index 7322f091..aa91740d 100644
--- a/dragonflybsd/DragonFlyBSDProcess.c
+++ b/dragonflybsd/DragonFlyBSDProcess.c
@@ -94,16 +94,6 @@ static int DragonFlyBSDProcess_compareByKey(const Process* v1, const Process* v2
}
}
-bool Process_isThread(const Process* this) {
- const DragonFlyBSDProcess* fp = (const DragonFlyBSDProcess*) this;
-
- if (fp->kernel == 1 ) {
- return 1;
- } else {
- return (Process_isUserlandThread(this));
- }
-}
-
const ProcessClass DragonFlyBSDProcess_class = {
.super = {
.extends = Class(Process),
diff --git a/dragonflybsd/DragonFlyBSDProcess.h b/dragonflybsd/DragonFlyBSDProcess.h
index 4b086af2..22cf9759 100644
--- a/dragonflybsd/DragonFlyBSDProcess.h
+++ b/dragonflybsd/DragonFlyBSDProcess.h
@@ -17,16 +17,10 @@ in the source distribution for its full text.
typedef struct DragonFlyBSDProcess_ {
Process super;
- int kernel;
int jid;
char* jname;
} DragonFlyBSDProcess;
-#define Process_isKernelThread(_process) (_process->kernel == 1)
-
-//#define Process_isUserlandThread(_process) (_process->pid != _process->tgid)
-#define Process_isUserlandThread(_process) (_process->nlwp > 1)
-
extern const ProcessClass DragonFlyBSDProcess_class;
extern const ProcessFieldData Process_fields[LAST_PROCESSFIELD];
@@ -35,6 +29,4 @@ Process* DragonFlyBSDProcess_new(const Settings* settings);
void Process_delete(Object* cast);
-bool Process_isThread(const Process* this);
-
#endif
diff --git a/dragonflybsd/DragonFlyBSDProcessList.c b/dragonflybsd/DragonFlyBSDProcessList.c
index 5e5d5dc9..5c0306f8 100644
--- a/dragonflybsd/DragonFlyBSDProcessList.c
+++ b/dragonflybsd/DragonFlyBSDProcessList.c
@@ -390,12 +390,13 @@ void ProcessList_goThroughEntries(ProcessList* super, bool pauseProcessUpdate) {
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;
- dfp->kernel = 1;
+ proc->isKernelThread = true;
} else {
proc->pid = kproc->kp_pid; // process ID
- dfp->kernel = 0;
+ proc->isKernelThread = false;
}
- proc->ppid = kproc->kp_ppid; // parent process id
+ proc->isUserlandThread = kproc->kp_nthreads > 1;
+ proc->ppid = 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

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