diff options
author | Benny Baumann <BenBE@geshi.org> | 2021-04-10 14:08:26 +0200 |
---|---|---|
committer | BenBE <BenBE@geshi.org> | 2021-05-23 09:22:21 +0200 |
commit | 7224d0e0831ee53d5028915f87dffd51ffa0d6fa (patch) | |
tree | c193e41f03dd30cf414d427c5e4e71b127842d98 /dragonflybsd | |
parent | 1a1fddae851b344b0a89a8f2753e2d2487f34064 (diff) |
Move kernel/userland thread handling to platform-independent implementation
Diffstat (limited to 'dragonflybsd')
-rw-r--r-- | dragonflybsd/DragonFlyBSDProcess.c | 10 | ||||
-rw-r--r-- | dragonflybsd/DragonFlyBSDProcess.h | 8 | ||||
-rw-r--r-- | dragonflybsd/DragonFlyBSDProcessList.c | 7 |
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 |