summaryrefslogtreecommitdiffstats
path: root/otherlibs/unix/nice.c
diff options
context:
space:
mode:
Diffstat (limited to 'otherlibs/unix/nice.c')
-rw-r--r--otherlibs/unix/nice.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/otherlibs/unix/nice.c b/otherlibs/unix/nice.c
new file mode 100644
index 000000000..8fc265adb
--- /dev/null
+++ b/otherlibs/unix/nice.c
@@ -0,0 +1,36 @@
+#include <mlvalues.h>
+#include "unix.h"
+#include <errno.h>
+
+#ifdef HAS_GETPRIORITY
+
+#include <sys/time.h>
+#include <sys/resource.h>
+
+value unix_nice(incr)
+ value incr;
+{
+ int prio;
+ errno = 0;
+ prio = getpriority(PRIO_PROCESS, 0);
+ if (prio == -1 && errno != 0)
+ uerror("nice", Nothing);
+ prio += Int_val(incr);
+ if (setpriority(PRIO_PROCESS, 0, prio) == -1)
+ uerror("nice", Nothing);
+ return Val_int(prio);
+}
+
+#else
+
+value unix_nice(incr)
+ value incr;
+{
+ int ret;
+ errno = 0;
+ ret = nice(Int_val(incr));
+ if (ret == -1 && errno != 0) uerror("nice", Nothing);
+ return Val_int(ret);
+}
+
+#endif