summaryrefslogtreecommitdiff
path: root/lang/erlang/files/patch-ah
diff options
context:
space:
mode:
Diffstat (limited to 'lang/erlang/files/patch-ah')
-rw-r--r--lang/erlang/files/patch-ah84
1 files changed, 84 insertions, 0 deletions
diff --git a/lang/erlang/files/patch-ah b/lang/erlang/files/patch-ah
new file mode 100644
index 000000000000..7da039d6bdf1
--- /dev/null
+++ b/lang/erlang/files/patch-ah
@@ -0,0 +1,84 @@
+--- lib/os_mon/c_src/cpu_sup.c.orig Sat Dec 2 22:12:38 2000
++++ lib/os_mon/c_src/cpu_sup.c Sat Dec 2 22:47:11 2000
+@@ -26,7 +26,14 @@
+ */
+
+ #include<stdio.h>
++#ifdef __FreeBSD__
++#include <sys/types.h>
++#include <sys/sysctl.h>
++#include <sys/param.h>
++#include <sys/user.h>
++#else
+ #include<kstat.h>
++#endif
+
+ #define FD_IN 0
+ #define FD_OUT 1
+@@ -45,20 +52,23 @@
+ static void send(unsigned int data);
+ static void error(char* err_msg);
+
++#ifndef __FreeBSD__
+ static kstat_ctl_t *kc;
+ static kstat_t *ks;
++#endif
+
+ int main(int argc, char** argv) {
+- kid_t kid;
+ char cmd;
+ int rc;
++#ifndef __FreeBSD__
++ kid_t kid;
+
+ kc = kstat_open();
+ if(!kc) error("Can't open header kstat");
+
+ ks = kstat_lookup(kc,"unix",0,"system_misc");
+ if(!ks) error("Can't open system_misc kstat");
+-
++#endif
+
+ while(1) {
+ rc = read(FD_IN, &cmd, sizeof(cmd));
+@@ -79,6 +89,32 @@
+ }
+
+ static unsigned int measure(char* name) {
++#ifdef __FreeBSD__
++ size_t len;
++ int mib[3];
++ if (!strcmp (name, "nproc")) {
++ mib[0] = CTL_KERN;
++ mib[1] = KERN_PROC;
++ mib[2] = KERN_PROC_ALL;
++ sysctl(mib, 3, NULL, &len, NULL, 0);
++ return len/sizeof(struct kinfo_proc);
++ } else {
++ struct loadavg load;
++ mib[0] = CTL_VM;
++ mib[1] = VM_LOADAVG;
++ len = sizeof load;
++ sysctl(mib, 2, &load, &len, NULL, 0);
++ if (!strcmp (name, "avenrun_1min")) {
++ return load.ldavg[0] * 256 / load.fscale;
++ } else if (!strcmp (name, "avenrun_5min")) {
++ return load.ldavg[1] * 256 / load.fscale;
++ } else if (!strcmp (name, "avenrun_15min")) {
++ return load.ldavg[2] * 256 / load.fscale;
++ } else {
++ return -1;
++ }
++ }
++#else
+ kstat_named_t* entry;
+
+ kstat_read(kc,ks,NULL);
+@@ -90,6 +126,7 @@
+ return -1;
+
+ return entry->value.ul;
++#endif
+ }
+
+ static void send(unsigned int data) {