diff --git a/Affinity.c b/Affinity.c index c928fec1..b6eafcee 100644 --- a/Affinity.c +++ b/Affinity.c @@ -1,6 +1,7 @@ /* htop - Affinity.c (C) 2004-2011 Hisham H. Muhammad +(C) 2020 Red Hat, Inc. All Rights Reserved. Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ @@ -79,7 +80,8 @@ Affinity* Affinity_get(Process* proc, ProcessList* pl) { return affinity; } -bool Affinity_set(Process* proc, Affinity* this) { +bool Affinity_set(Process* proc, Arg arg) { + Affinity *this = arg.v; hwloc_cpuset_t cpuset = hwloc_bitmap_alloc(); for (int i = 0; i < this->used; i++) { hwloc_bitmap_set(cpuset, this->cpus[i]); @@ -103,7 +105,8 @@ Affinity* Affinity_get(Process* proc, ProcessList* pl) { return affinity; } -bool Affinity_set(Process* proc, Affinity* this) { +bool Affinity_set(Process* proc, Arg arg) { + Affinity *this = arg.v; cpu_set_t cpuset; CPU_ZERO(&cpuset); for (int i = 0; i < this->used; i++) { diff --git a/Affinity.h b/Affinity.h index 818b905e..3c716034 100644 --- a/Affinity.h +++ b/Affinity.h @@ -5,6 +5,7 @@ /* htop - Affinity.h (C) 2004-2011 Hisham H. Muhammad +(C) 2020 Red Hat, Inc. All Rights Reserved. Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ @@ -39,13 +40,13 @@ extern void Affinity_add(Affinity* this, int id); extern Affinity* Affinity_get(Process* proc, ProcessList* pl); -extern bool Affinity_set(Process* proc, Affinity* this); +extern bool Affinity_set(Process* proc, Arg arg); #elif HAVE_LINUX_AFFINITY extern Affinity* Affinity_get(Process* proc, ProcessList* pl); -extern bool Affinity_set(Process* proc, Affinity* this); +extern bool Affinity_set(Process* proc, Arg arg); #endif diff --git a/MainPanel.c b/MainPanel.c index 25023367..19b09ff1 100644 --- a/MainPanel.c +++ b/MainPanel.c @@ -1,6 +1,7 @@ /* htop - ColumnsPanel.c (C) 2004-2015 Hisham H. Muhammad +(C) 2020 Red Hat, Inc. All Rights Reserved. Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ @@ -25,11 +26,6 @@ typedef struct MainPanel_ { pid_t pidSearch; } MainPanel; -typedef union { - int i; - void* v; -} Arg; - typedef bool(*MainPanel_ForeachProcessFn)(Process*, Arg); #define MainPanel_getFunctionBar(this_) (((Panel*)(this_))->defaultBar) diff --git a/MainPanel.h b/MainPanel.h index 8d753306..6162d8e9 100644 --- a/MainPanel.h +++ b/MainPanel.h @@ -5,6 +5,7 @@ /* htop - ColumnsPanel.h (C) 2004-2015 Hisham H. Muhammad +(C) 2020 Red Hat, Inc. All Rights Reserved. Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ @@ -21,11 +22,6 @@ typedef struct MainPanel_ { pid_t pidSearch; } MainPanel; -typedef union { - int i; - void* v; -} Arg; - typedef bool(*MainPanel_ForeachProcessFn)(Process*, Arg); #define MainPanel_getFunctionBar(this_) (((Panel*)(this_))->defaultBar) diff --git a/Object.c b/Object.c index 120d28c1..66946352 100644 --- a/Object.c +++ b/Object.c @@ -1,6 +1,7 @@ /* htop - Object.c (C) 2004-2012 Hisham H. Muhammad +(C) 2020 Red Hat, Inc. All Rights Reserved. Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ @@ -40,6 +41,11 @@ struct Object_ { ObjectClass* klass; }; +typedef union { + int i; + void* v; +} Arg; + }*/ ObjectClass Object_class = { diff --git a/Object.h b/Object.h index bcf2c481..3505708c 100644 --- a/Object.h +++ b/Object.h @@ -5,6 +5,7 @@ /* htop - Object.h (C) 2004-2012 Hisham H. Muhammad +(C) 2020 Red Hat, Inc. All Rights Reserved. Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ @@ -41,6 +42,11 @@ struct Object_ { ObjectClass* klass; }; +typedef union { + int i; + void* v; +} Arg; + extern ObjectClass Object_class; diff --git a/Process.c b/Process.c index 199263e2..391fbb3e 100644 --- a/Process.c +++ b/Process.c @@ -1,6 +1,7 @@ /* htop - Process.c (C) 2004-2015 Hisham H. Muhammad +(C) 2020 Red Hat, Inc. All Rights Reserved. Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ @@ -561,14 +562,15 @@ bool Process_setPriority(Process* this, int priority) { return (err == 0); } -bool Process_changePriorityBy(Process* this, int delta) { - return Process_setPriority(this, this->nice + delta); +bool Process_changePriorityBy(Process* this, Arg delta) { + return Process_setPriority(this, this->nice + delta.i); } -void Process_sendSignal(Process* this, int sgn) { +bool Process_sendSignal(Process* this, Arg sgn) { CRT_dropPrivileges(); - kill(this->pid, (int) sgn); + bool ok = (kill(this->pid, sgn.i) == 0); CRT_restorePrivileges(); + return ok; } long Process_pidCompare(const void* v1, const void* v2) { diff --git a/Process.h b/Process.h index c4575167..604c754a 100644 --- a/Process.h +++ b/Process.h @@ -5,6 +5,7 @@ /* htop - Process.h (C) 2004-2015 Hisham H. Muhammad +(C) 2020 Red Hat, Inc. All Rights Reserved. Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ @@ -199,9 +200,9 @@ extern void Process_toggleTag(Process* this); extern bool Process_setPriority(Process* this, int priority); -extern bool Process_changePriorityBy(Process* this, int delta); +extern bool Process_changePriorityBy(Process* this, Arg delta); -extern void Process_sendSignal(Process* this, int sgn); +extern bool Process_sendSignal(Process* this, Arg sgn); extern long Process_pidCompare(const void* v1, const void* v2); diff --git a/linux/LinuxProcess.c b/linux/LinuxProcess.c index 76f42394..70c3b5d1 100644 --- a/linux/LinuxProcess.c +++ b/linux/LinuxProcess.c @@ -1,6 +1,7 @@ /* htop - LinuxProcess.c (C) 2014 Hisham H. Muhammad +(C) 2020 Red Hat, Inc. All Rights Reserved. Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ @@ -314,12 +315,12 @@ IOPriority LinuxProcess_updateIOPriority(LinuxProcess* this) { return ioprio; } -bool LinuxProcess_setIOPriority(LinuxProcess* this, IOPriority ioprio) { +bool LinuxProcess_setIOPriority(LinuxProcess* this, Arg ioprio) { // Other OSes masquerading as Linux (NetBSD?) don't have this syscall #ifdef SYS_ioprio_set - syscall(SYS_ioprio_set, IOPRIO_WHO_PROCESS, this->super.pid, ioprio); + syscall(SYS_ioprio_set, IOPRIO_WHO_PROCESS, this->super.pid, ioprio.i); #endif - return (LinuxProcess_updateIOPriority(this) == ioprio); + return (LinuxProcess_updateIOPriority(this) == ioprio.i); } #ifdef HAVE_DELAYACCT diff --git a/linux/LinuxProcess.h b/linux/LinuxProcess.h index f9984330..44ae91c1 100644 --- a/linux/LinuxProcess.h +++ b/linux/LinuxProcess.h @@ -5,6 +5,7 @@ /* htop - LinuxProcess.h (C) 2014 Hisham H. Muhammad +(C) 2020 Red Hat, Inc. All Rights Reserved. Released under the GNU GPL, see the COPYING file in the source distribution for its full text. */ @@ -176,7 +177,7 @@ extern io_priority; extern IOPriority LinuxProcess_updateIOPriority(LinuxProcess* this); -extern bool LinuxProcess_setIOPriority(LinuxProcess* this, IOPriority ioprio); +extern bool LinuxProcess_setIOPriority(LinuxProcess* this, Arg ioprio); #ifdef HAVE_DELAYACCT extern void LinuxProcess_printDelay(float delay_percent, char* buffer, int n);