summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Action.c93
-rw-r--r--Affinity.c13
-rw-r--r--AffinityPanel.c51
-rw-r--r--BatteryMeter.c2
-rw-r--r--CPUMeter.c17
-rw-r--r--CRT.c758
-rw-r--r--CRT.h2
-rw-r--r--CategoriesPanel.c1
-rw-r--r--CheckItem.c15
-rw-r--r--ClockMeter.c2
-rw-r--r--ColorsPanel.c1
-rw-r--r--ColumnsPanel.c2
-rw-r--r--CommandScreen.c4
-rw-r--r--DateMeter.c4
-rw-r--r--DateTimeMeter.c4
-rw-r--r--EnvScreen.c4
-rw-r--r--FunctionBar.c20
-rw-r--r--Hashtable.c9
-rw-r--r--Header.c11
-rw-r--r--HostnameMeter.c2
-rw-r--r--IncSet.c41
-rw-r--r--IncSet.h2
-rw-r--r--InfoScreen.c26
-rw-r--r--ListItem.c4
-rw-r--r--MainPanel.c15
-rw-r--r--MainPanel.h2
-rw-r--r--Meter.c67
-rw-r--r--Object.c6
-rw-r--r--Object.h2
-rw-r--r--OpenFilesScreen.c16
-rw-r--r--Panel.c38
-rw-r--r--Panel.h4
-rw-r--r--Process.c71
-rw-r--r--Process.h2
-rw-r--r--ProcessList.c54
-rw-r--r--RichString.c6
-rw-r--r--RichString.h12
-rw-r--r--ScreenManager.c68
-rw-r--r--Settings.c25
-rw-r--r--TraceScreen.c27
-rw-r--r--UptimeMeter.c6
-rw-r--r--Vector.c50
-rw-r--r--Vector.h2
-rw-r--r--XUtils.c8
-rw-r--r--XUtils.h4
-rw-r--r--darwin/Battery.c24
-rw-r--r--darwin/DarwinProcess.c36
-rw-r--r--darwin/DarwinProcess.h8
-rw-r--r--darwin/DarwinProcessList.c203
-rw-r--r--darwin/DarwinProcessList.h10
-rw-r--r--darwin/Platform.c52
-rw-r--r--darwin/Platform.h8
-rw-r--r--dragonflybsd/Battery.c10
-rw-r--r--dragonflybsd/DragonFlyBSDProcess.c7
-rw-r--r--dragonflybsd/DragonFlyBSDProcessList.c81
-rw-r--r--dragonflybsd/DragonFlyBSDProcessList.h10
-rw-r--r--dragonflybsd/Platform.c21
-rw-r--r--dragonflybsd/Platform.h8
-rw-r--r--freebsd/Battery.c10
-rw-r--r--freebsd/FreeBSDProcess.c7
-rw-r--r--freebsd/FreeBSDProcessList.c98
-rw-r--r--freebsd/FreeBSDProcessList.h8
-rw-r--r--freebsd/Platform.c24
-rw-r--r--freebsd/Platform.h8
-rw-r--r--htop.c35
-rw-r--r--linux/Battery.c95
-rw-r--r--linux/IOPriorityPanel.c19
-rw-r--r--linux/LinuxProcess.c25
-rw-r--r--linux/LinuxProcess.h2
-rw-r--r--linux/LinuxProcessList.c363
-rw-r--r--linux/LinuxProcessList.h2
-rw-r--r--linux/Platform.c58
-rw-r--r--linux/Platform.h8
-rw-r--r--linux/PressureStallMeter.c32
-rw-r--r--linux/SELinuxMeter.c21
-rw-r--r--linux/ZramMeter.c6
-rw-r--r--openbsd/Battery.c2
-rw-r--r--openbsd/OpenBSDProcess.c75
-rw-r--r--openbsd/OpenBSDProcessList.c15
-rw-r--r--openbsd/OpenBSDProcessList.h2
-rw-r--r--openbsd/Platform.c43
-rw-r--r--openbsd/Platform.h8
-rw-r--r--solaris/Platform.c60
-rw-r--r--solaris/Platform.h10
-rw-r--r--solaris/SolarisProcessList.c145
-rw-r--r--solaris/SolarisProcessList.h2
-rw-r--r--unsupported/Platform.c8
-rw-r--r--unsupported/Platform.h8
-rw-r--r--unsupported/UnsupportedProcessList.c83
-rw-r--r--zfs/ZfsCompressedArcMeter.c2
-rw-r--r--zfs/openzfs_sysctl.c55
-rw-r--r--zfs/openzfs_sysctl.h4
92 files changed, 1935 insertions, 1459 deletions
diff --git a/Action.c b/Action.c
index ee5b9af8..e226bc53 100644
--- a/Action.c
+++ b/Action.c
@@ -60,19 +60,19 @@ Object* Action_pickFromVector(State* st, Panel* list, int x, bool followProcess)
}
ScreenManager_delete(scr);
Panel_move(panel, 0, y);
- Panel_resize(panel, COLS, LINES-y-1);
+ Panel_resize(panel, COLS, LINES - y - 1);
if (panelFocus == list && ch == 13) {
if (followProcess) {
Process* selected = (Process*)Panel_getSelected(panel);
if (selected && selected->pid == pid)
return Panel_getSelected(list);
- else
- beep();
+
+ beep();
} else {
return Panel_getSelected(list);
}
-
}
+
return NULL;
}
@@ -94,7 +94,7 @@ static void Action_runSetup(State* st) {
static bool changePriority(MainPanel* panel, int delta) {
bool anyTagged;
- bool ok = MainPanel_foreachProcess(panel, Process_changePriorityBy, (Arg){ .i = delta }, &anyTagged);
+ bool ok = MainPanel_foreachProcess(panel, Process_changePriorityBy, (Arg) { .i = delta }, &anyTagged);
if (!ok)
beep();
return anyTagged;
@@ -129,14 +129,18 @@ static void tagAllChildren(Panel* panel, Process* parent) {
static bool expandCollapse(Panel* panel) {
Process* p = (Process*) Panel_getSelected(panel);
- if (!p) return false;
+ if (!p)
+ return false;
+
p->showChildren = !p->showChildren;
return true;
}
static bool collapseIntoParent(Panel* panel) {
Process* p = (Process*) Panel_getSelected(panel);
- if (!p) return false;
+ if (!p)
+ return false;
+
pid_t ppid = Process_getParentPid(p);
for (int i = 0; i < Panel_size(panel); i++) {
Process* q = (Process*) Panel_get(panel, i);
@@ -166,6 +170,7 @@ static Htop_Reaction sortBy(State* st) {
Panel_add(sortPanel, (Object*) ListItem_new(name, fields[i]));
if (fields[i] == st->settings->sortKey)
Panel_setSelected(sortPanel, i);
+
free(name);
}
ListItem* field = (ListItem*) Action_pickFromVector(st, sortPanel, 15, false);
@@ -173,8 +178,10 @@ static Htop_Reaction sortBy(State* st) {
reaction |= Action_setSortKey(st->settings, field->key);
}
Object_delete(sortPanel);
+
if (st->pauseProcessUpdate)
ProcessList_sort(st->pl);
+
return reaction | HTOP_REFRESH | HTOP_REDRAW_BAR | HTOP_UPDATE_PANELHDR;
}
@@ -182,7 +189,7 @@ static Htop_Reaction sortBy(State* st) {
static Htop_Reaction actionResize(State* st) {
clear();
- Panel_resize(st->panel, COLS, LINES-(st->panel->y)-1);
+ Panel_resize(st->panel, COLS, LINES - (st->panel->y) - 1);
return HTOP_REDRAW_BAR;
}
@@ -216,7 +223,10 @@ static Htop_Reaction actionToggleProgramPath(State* st) {
static Htop_Reaction actionToggleTreeView(State* st) {
st->settings->treeView = !st->settings->treeView;
- if (st->settings->treeView) st->settings->direction = 1;
+ if (st->settings->treeView) {
+ st->settings->direction = 1;
+ }
+
ProcessList_expandTree(st->pl);
return HTOP_REFRESH | HTOP_SAVE_SETTINGS | HTOP_KEEP_FOLLOWING | HTOP_REDRAW_BAR | HTOP_UPDATE_PANELHDR;
}
@@ -287,13 +297,18 @@ static Htop_Reaction actionQuit(ATTR_UNUSED State* st) {
static Htop_Reaction actionSetAffinity(State* st) {
if (st->pl->cpuCount == 1)
return HTOP_OK;
+
#if (defined(HAVE_LIBHWLOC) || defined(HAVE_LINUX_AFFINITY))
Panel* panel = st->panel;
Process* p = (Process*) Panel_getSelected(panel);
- if (!p) return HTOP_OK;
+ if (!p)
+ return HTOP_OK;
+
Affinity* affinity1 = Affinity_get(p, st->pl);
- if (!affinity1) return HTOP_OK;
+ if (!affinity1)
+ return HTOP_OK;
+
int width;
Panel* affinityPanel = AffinityPanel_new(st->pl, affinity1, &width);
width += 1; /* we add a gap between the panels */
@@ -302,8 +317,9 @@ static Htop_Reaction actionSetAffinity(State* st) {
void* set = Action_pickFromVector(st, affinityPanel, width, true);
if (set) {
Affinity* affinity2 = AffinityPanel_getAffinity(affinityPanel, st->pl);
- bool ok = MainPanel_foreachProcess((MainPanel*)panel, Affinity_set, (Arg){ .v = affinity2 }, NULL);
- if (!ok) beep();
+ bool ok = MainPanel_foreachProcess((MainPanel*)panel, Affinity_set, (Arg) { .v = affinity2 }, NULL);
+ if (!ok)
+ beep();
Affinity_delete(affinity2);
}
Object_delete(affinityPanel);
@@ -319,7 +335,7 @@ static Htop_Reaction actionKill(State* st) {
Panel_setHeader(st->panel, "Sending...");
Panel_draw(st->panel, true);
refresh();
- MainPanel_foreachProcess((MainPanel*)st->panel, Process_sendSignal, (Arg){ .i = sgn->key }, NULL);
+ MainPanel_foreachProcess((MainPanel*)st->panel, Process_sendSignal, (Arg) { .i = sgn->key }, NULL);
napms(500);
}
}
@@ -363,7 +379,9 @@ static Htop_Reaction actionSetup(State* st) {
static Htop_Reaction actionLsof(State* st) {
Process* p = (Process*) Panel_getSelected(st->panel);
- if (!p) return HTOP_OK;
+ if (!p)
+ return HTOP_OK;
+
OpenFilesScreen* ofs = OpenFilesScreen_new(p);
InfoScreen_run((InfoScreen*)ofs);
OpenFilesScreen_delete((Object*)ofs);
@@ -385,7 +403,9 @@ static Htop_Reaction actionShowLocks(State* st) {
static Htop_Reaction actionStrace(State* st) {
Process* p = (Process*) Panel_getSelected(st->panel);
- if (!p) return HTOP_OK;
+ if (!p)
+ return HTOP_OK;
+
TraceScreen* ts = TraceScreen_new(p);
bool ok = TraceScreen_forkTracer(ts);
if (ok) {
@@ -399,23 +419,28 @@ static Htop_Reaction actionStrace(State* st) {
static Htop_Reaction actionTag(State* st) {
Process* p = (Process*) Panel_getSelected(st->panel);
- if (!p) return HTOP_OK;
+ if (!p)
+ return HTOP_OK;
+
Process_toggleTag(p);
Panel_onKey(st->panel, KEY_DOWN);
return HTOP_OK;
}
-static Htop_Reaction actionRedraw(ATTR_UNUSED State *st) {
+static Htop_Reaction actionRedraw(ATTR_UNUSED State* st) {
clear();
return HTOP_REFRESH | HTOP_REDRAW_BAR;
}
-static Htop_Reaction actionTogglePauseProcessUpdate(State *st) {
+static Htop_Reaction actionTogglePauseProcessUpdate(State* st) {
st->pauseProcessUpdate = !st->pauseProcessUpdate;
return HTOP_REFRESH | HTOP_REDRAW_BAR;
}
-static const struct { const char* key; const char* info; } helpLeft[] = {
+static const struct {
+ const char* key;
+ const char* info;
+} helpLeft[] = {
{ .key = " Arrows: ", .info = "scroll process list" },
{ .key = " Digits: ", .info = "incremental PID search" },
{ .key = " F3 /: ", .info = "incremental name search" },
@@ -434,7 +459,10 @@ static const struct { const char* key; const char* info; } helpLeft[] = {
{ .key = NULL, .info = NULL }
};
-static const struct { const char* key; const char* info; } helpRight[] = {
+static const struct {
+ const char* key;
+ const char* info;
+} helpRight[] = {
{ .key = " Space: ", .info = "tag process" },
{ .key = " c: ", .info = "tag process and its children" },
{ .key = " U: ", .info = "untag all processes" },
@@ -456,13 +484,18 @@ static const struct { const char* key; const char* info; } helpRight[] = {
{ .key = NULL, .info = NULL }
};
+static inline void addattrstr( int attr, const char* str) {
+ attrset(attr);
+ addstr(str);
+}
+
static Htop_Reaction actionHelp(State* st) {
Settings* settings = st->settings;
clear();
attrset(CRT_colors[HELP_BOLD]);
- for (int i = 0; i < LINES-1; i++)
+ for (int i = 0; i < LINES - 1; i++)
mvhline(i, 0, ' ', COLS);
int line = 0;
@@ -473,7 +506,7 @@ static Htop_Reaction actionHelp(State* st) {
attrset(CRT_colors[DEFAULT_COLOR]);
line++;
mvaddstr(line++, 0, "CPU usage bar: ");
- #define addattrstr(a,s) attrset(a);addstr(s)
+
addattrstr(CRT_colors[BAR_BORDER], "[");
if (settings->detailedCPUTime) {
addattrstr(CRT_colors[CPU_NICE_TEXT], "low"); addstr("/");
@@ -508,7 +541,7 @@ static Htop_Reaction actionHelp(State* st) {
addattrstr(CRT_colors[BAR_SHADOW], " used/total");
addattrstr(CRT_colors[BAR_BORDER], "]");
attrset(CRT_colors[DEFAULT_COLOR]);
- mvaddstr(line++,0, "Type and layout of header meters are configurable in the setup screen.");
+ mvaddstr(line++, 0, "Type and layout of header meters are configurable in the setup screen.");
if (CRT_colorScheme == COLORSCHEME_MONOCHROME) {
mvaddstr(line, 0, "In monochrome, meters display as different chars, in order: |#*@$%&.");
}
@@ -563,14 +596,18 @@ static Htop_Reaction actionUntagAll(State* st) {
static Htop_Reaction actionTagAllChildren(State* st) {
Process* p = (Process*) Panel_getSelected(st->panel);
- if (!p) return HTOP_OK;
+ if (!p)
+ return HTOP_OK;
+
tagAllChildren(st->panel, p);
return HTOP_OK;
}
static Htop_Reaction actionShowEnvScreen(State* st) {
Process* p = (Process*) Panel_getSelected(st->panel);
- if (!p) return HTOP_OK;
+ if (!p)
+ return HTOP_OK;
+
EnvScreen* es = EnvScreen_new(p);
InfoScreen_run((InfoScreen*)es);
EnvScreen_delete((Object*)es);
@@ -581,7 +618,9 @@ static Htop_Reaction actionShowEnvScreen(State* st) {
static Htop_Reaction actionShowCommandScreen(State* st) {
Process* p = (Process*) Panel_getSelected(st->panel);
- if (!p) return HTOP_OK;
+ if (!p)
+ return HTOP_OK;
+
CommandScreen* cmdScr = CommandScreen_new(p);
InfoScreen_run((InfoScreen*)cmdScr);
CommandScreen_delete((Object*)cmdScr);
diff --git a/Affinity.c b/Affinity.c
index 4d78944c..6fb5846c 100644
--- a/Affinity.c
+++ b/Affinity.c
@@ -65,7 +65,7 @@ Affinity* Affinity_get(Process* proc, ProcessList* pl) {
} else {
unsigned int id;
hwloc_bitmap_foreach_begin(id, cpuset);
- Affinity_add(affinity, id);
+ Affinity_add(affinity, id);
hwloc_bitmap_foreach_end();
}
}
@@ -74,7 +74,7 @@ Affinity* Affinity_get(Process* proc, ProcessList* pl) {
}
bool Affinity_set(Process* proc, Arg arg) {
- Affinity *this = arg.v;
+ 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]);
@@ -89,17 +89,20 @@ bool Affinity_set(Process* proc, Arg arg) {
Affinity* Affinity_get(Process* proc, ProcessList* pl) {
cpu_set_t cpuset;
bool ok = (sched_getaffinity(proc->pid, sizeof(cpu_set_t), &cpuset) == 0);
- if (!ok) return NULL;
+ if (!ok)
+ return NULL;
+
Affinity* affinity = Affinity_new(pl);
for (int i = 0; i < pl->cpuCount; i++) {
- if (CPU_ISSET(i, &cpuset))
+ if (CPU_ISSET(i, &cpuset)) {
Affinity_add(affinity, i);
+ }
}
return affinity;
}
bool Affinity_set(Process* proc, Arg arg) {
- Affinity *this = arg.v;
+ Affinity* this = arg.v;
cpu_set_t cpuset;
CPU_ZERO(&cpuset);
for (int i = 0; i < this->used; i++) {
diff --git a/AffinityPanel.c b/AffinityPanel.c
index a8cb66ee..9c2a6e7c 100644
--- a/AffinityPanel.c
+++ b/AffinityPanel.c
@@ -35,7 +35,7 @@ typedef struct MaskItem_ {
char* indent; /* used also as an condition whether this is a tree node */
int value; /* tri-state: 0 - off, 1 - some set, 2 - all set */
int sub_tree; /* tri-state: 0 - no sub-tree, 1 - open sub-tree, 2 - closed sub-tree */
- Vector *children;
+ Vector* children;
#ifdef HAVE_LIBHWLOC
bool ownCpuset;
hwloc_bitmap_t cpuset;
@@ -60,12 +60,13 @@ static void MaskItem_display(const Object* cast, RichString* out) {
const MaskItem* this = (const MaskItem*)cast;
assert (this != NULL);
RichString_append(out, CRT_colors[CHECK_BOX], "[");
- if (this->value == 2)
+ if (this->value == 2) {
RichString_append(out, CRT_colors[CHECK_MARK], "x");
- else if (this->value == 1)
+ } else if (this->value == 1) {
RichString_append(out, CRT_colors[CHECK_MARK], "o");
- else
+ } else {
RichString_append(out, CRT_colors[CHECK_MARK], " ");
+ }
RichString_append(out, CRT_colors[CHECK_BOX], "]");
RichString_append(out, CRT_colors[CHECK_TEXT], " ");
if (this->indent) {
@@ -123,11 +124,11 @@ typedef struct AffinityPanel_ {
Panel super;
ProcessList* pl;
bool topoView;
- Vector *cpuids;
+ Vector* cpuids;
unsigned width;
#ifdef HAVE_LIBHWLOC
- MaskItem *topoRoot;
+ MaskItem* topoRoot;
hwloc_const_cpuset_t allCpuset;
hwloc_bitmap_t workCpuset;
#endif
@@ -178,11 +179,12 @@ static void AffinityPanel_update(AffinityPanel* this, bool keepSelected) {
Panel_prune(super);
#ifdef HAVE_LIBHWLOC
- if (this->topoView)
+ if (this->topoView) {
AffinityPanel_updateTopo(this, this->topoRoot);
- else {
- for (int i = 0; i < Vector_size(this->cpuids); i++)
+ } else {
+ for (int i = 0; i < Vector_size(this->cpuids); i++) {
AffinityPanel_updateItem(this, (MaskItem*) Vector_get(this->cpuids, i));
+ }
}
#else
Panel_splice(super, this->cpuids);
@@ -262,7 +264,7 @@ static HandlerResult AffinityPanel_eventHandler(Panel* super, int ch) {
#ifdef HAVE_LIBHWLOC
-static MaskItem *AffinityPanel_addObject(AffinityPanel* this, hwloc_obj_t obj, unsigned indent, MaskItem *parent) {
+static MaskItem* AffinityPanel_addObject(AffinityPanel* this, hwloc_obj_t obj, unsigned indent, MaskItem* parent) {
const char* type_name = hwloc_obj_type_string(obj->type);
const char* index_prefix = "#";
unsigned depth = obj->depth;
@@ -285,7 +287,7 @@ static MaskItem *AffinityPanel_addObject(AffinityPanel* this, hwloc_obj_t obj, u
left -= len;
}
xSnprintf(&indent_buf[off], left, "%s",
- obj->next_sibling ? CRT_treeStr[TREE_STR_RTEE] : CRT_treeStr[TREE_STR_BEND]);
+ obj->next_sibling ? CRT_treeStr[TREE_STR_RTEE] : CRT_treeStr[TREE_STR_BEND]);
// Uncomment when further appending to indent_buf
//size_t len = strlen(&indent_buf[off]);
//off += len;
@@ -294,7 +296,7 @@ static MaskItem *AffinityPanel_addObject(AffinityPanel* this, hwloc_obj_t obj, u
xSnprintf(buf, 64, "%s %s%u",