add legacy getloadavg api
authorSzabolcs Nagy <nsz@port70.net>
Thu, 21 Nov 2013 01:59:43 +0000 (01:59 +0000)
committerSzabolcs Nagy <nsz@port70.net>
Thu, 21 Nov 2013 01:59:43 +0000 (01:59 +0000)
include/stdlib.h
src/legacy/getloadavg.c [new file with mode: 0644]

index bca1fb4..2bd5f10 100644 (file)
@@ -139,6 +139,7 @@ int mkstemps (char *, int);
 int mkostemps (char *, int, int);
 void *valloc (size_t);
 void *memalign(size_t, size_t);
+int getloadavg(double *, int);
 #define WCOREDUMP(s) ((s) & 0x80)
 #define WIFCONTINUED(s) ((s) == 0xffff)
 #endif
diff --git a/src/legacy/getloadavg.c b/src/legacy/getloadavg.c
new file mode 100644 (file)
index 0000000..43a8c9e
--- /dev/null
@@ -0,0 +1,18 @@
+#define _GNU_SOURCE
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+int getloadavg(double *a, int n)
+{
+       int i;
+       double b[3];
+       FILE *f = fopen("/proc/loadavg", "rbe");
+       if (!f) return -1;
+       i = fscanf(f, "%lf %lf %lf", b, b+1, b+2);
+       fclose(f);
+       if (n > i) n = i;
+       if (n < 0) return -1;
+       memcpy(a, b, n * sizeof *a);
+       return n;
+}