summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Göttsche <cgzones@googlemail.com>2022-09-20 21:40:02 +0200
committerBenBE <BenBE@geshi.org>2022-09-23 20:32:33 +0200
commitbc22bee6505a4953d20eed96899d929e769a7baa (patch)
tree9967b614dfd517027d9eca2861087c6fd394bcfd
parentd58180bdac59800df47e182555e3a1f68358cddd (diff)
Darwin: increase buffer size each retry
Increase the buffer for the current running processes each retry to handle very busy systems. Closes: #118
-rw-r--r--darwin/DarwinProcessList.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/darwin/DarwinProcessList.c b/darwin/DarwinProcessList.c
index bd7821b8..dae588ba 100644
--- a/darwin/DarwinProcessList.c
+++ b/darwin/DarwinProcessList.c
@@ -68,12 +68,13 @@ static struct kinfo_proc* ProcessList_getKInfoProcs(size_t* count) {
int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0 };
struct kinfo_proc* processes = NULL;
- for (int retry = 3; retry > 0; retry--) {
+ for (unsigned int retry = 0; retry < 4; retry++) {
size_t size = 0;
if (sysctl(mib, 4, NULL, &size, NULL, 0) < 0 || size == 0) {
CRT_fatalError("Unable to get size of kproc_infos");
}
+ size += 16 * retry * retry * sizeof(struct kinfo_proc);
processes = xRealloc(processes, size);
if (sysctl(mib, 4, processes, &size, NULL, 0) == 0) {

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