summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathan Scott <nathans@redhat.com>2020-08-20 09:35:24 +1000
committerNathan Scott <nathans@redhat.com>2020-08-20 09:35:33 +1000
commit500fb283e9b86a6580cedbf834aea9d7dd639a66 (patch)
tree52c0df7aa5178887f14e48fc40c1dc45a8530dfc
parent5228f5d47a10d9194297a31bf4cf7dbbade6c868 (diff)
Resolve compiler warnings and errors relating to the Arg union
Promote the Arg union to a core data type in Object.c such that it is visible everywhere (many source files need it), and correct declarations of several functions that use it. The Process_sendSignal function is also corrected to have the expected return type (bool, not void) - an error being masked by ignoring this not-quite-harmless warning. I've also added error checking to the kill(2) call here, which was previously overlooked / missing (?).
-rw-r--r--Affinity.c7
-rw-r--r--Affinity.h5
-rw-r--r--MainPanel.c6
-rw-r--r--MainPanel.h6
-rw-r--r--Object.c6
-rw-r--r--Object.h6
-rw-r--r--Process.c10
-rw-r--r--Process.h5
-rw-r--r--linux/LinuxProcess.c7
-rw-r--r--linux/LinuxProcess.h3
10 files changed, 37 insertions, 24 deletions
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);

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