Added 'renice' command, thanks to Dave Cinege <dcinege@psychosis.com>
authorEric Andersen <andersen@codepoet.org>
Fri, 21 Jul 2000 21:32:12 +0000 (21:32 -0000)
committerEric Andersen <andersen@codepoet.org>
Fri, 21 Jul 2000 21:32:12 +0000 (21:32 -0000)
 -Erik

Changelog
applets/busybox.c
applets/usage.c
busybox.c
busybox.def.h
docs/busybox.pod
docs/busybox.sgml
internal.h
procps/renice.c [new file with mode: 0644]
renice.c [new file with mode: 0644]
usage.c

index c91f3858d9a09c89bb71c6ddc6bd168c36e5274b..16c2ba1ed68d2ed78bd7609e363b6b8d60807877 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -1,5 +1,6 @@
 0.47pre
 
+       * added 'renice' command -- thanks to Dave Cinege <dcinege@psychosis.com>
        * 'make install' now creates relative symlinks, and added a new
            'make install-hardlinks' target to (tada) install hardlinks.
        * syslogd can now log messages to a remote host -- patch thanks
index 0c291d0c510c58e46b1b6a4402df937c01226a3c..5b19e8a160ddee65bb3d5f45598a13f7e7c25dfb 100644 (file)
@@ -250,6 +250,9 @@ const struct BB_applet applets[] = {
 #ifdef BB_REBOOT
        {"reboot", reboot_main, _BB_DIR_SBIN, reboot_usage},
 #endif
+#ifdef BB_RENICE
+       {"renice", renice_main, _BB_DIR_USR_BIN},
+#endif
 #ifdef BB_RM
        {"rm", rm_main, _BB_DIR_BIN, rm_usage},
 #endif
@@ -484,8 +487,9 @@ int main(int argc, char **argv)
 #ifdef BB_SH
        /* Add in a special case hack -- whenever **argv == '-'
         * (i.e. '-su' or '-sh') always invoke the shell */
-       if (**argv == '-')
+       if (**argv == '-' && *(*argv+1)!= '-') {
                exit(((*(shell_main)) (argc, argv)));
+       }
 #endif
 
        while (a->name != 0) {
index 1031f24bce5c5d90dc76219bc5a1d666615fb11c..3f367f9b1e090595909365d3ebdd6d7e7a8165e9 100644 (file)
@@ -859,6 +859,18 @@ const char reboot_usage[] =
        ;
 #endif
 
+       
+#if defined BB_RENICE
+const char renice_usage[] =
+       "renice priority pid [pid ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+       "\nChanges priority of running processes. Allowed priorities range\n"
+       "from 20 (the process runs only when nothing else is running) to 0\n"
+       "(default priority) to -20 (almost nothing else ever gets to run).\n"
+#endif
+       ;
+#endif
+
 #if defined BB_RM
 const char rm_usage[] =
        "rm [OPTION]... FILE...\n"
index 0c291d0c510c58e46b1b6a4402df937c01226a3c..5b19e8a160ddee65bb3d5f45598a13f7e7c25dfb 100644 (file)
--- a/busybox.c
+++ b/busybox.c
@@ -250,6 +250,9 @@ const struct BB_applet applets[] = {
 #ifdef BB_REBOOT
        {"reboot", reboot_main, _BB_DIR_SBIN, reboot_usage},
 #endif
+#ifdef BB_RENICE
+       {"renice", renice_main, _BB_DIR_USR_BIN},
+#endif
 #ifdef BB_RM
        {"rm", rm_main, _BB_DIR_BIN, rm_usage},
 #endif
@@ -484,8 +487,9 @@ int main(int argc, char **argv)
 #ifdef BB_SH
        /* Add in a special case hack -- whenever **argv == '-'
         * (i.e. '-su' or '-sh') always invoke the shell */
-       if (**argv == '-')
+       if (**argv == '-' && *(*argv+1)!= '-') {
                exit(((*(shell_main)) (argc, argv)));
+       }
 #endif
 
        while (a->name != 0) {
index 2c98af40da02fb211f8f5510dcea21cef389efdb..a9f54eaef32c43c8ef4950fd5034ab5597dcc9f9 100644 (file)
@@ -73,6 +73,7 @@
 #define BB_PS
 #define BB_PWD
 #define BB_REBOOT
+#define BB_RENICE
 #define BB_RM
 #define BB_RMDIR
 #define BB_RMMOD
index 4264f57c6e964b698203d1b324bd09053657005f..d4298530684ed311641798540690e416464aed51 100644 (file)
@@ -61,7 +61,7 @@ fdflush, find, free, freeramdisk, fsck.minix, grep, gunzip, gzip, halt,
 head, hostid, hostname, id, init, insmod, kill, killall, length, ln,
 loadacm, loadfont, loadkmap, logger, logname, ls, lsmod, makedevs, mkdir,
 mkfifo, mkfs.minix, mknod, mkswap, mktemp, more, mount, mt, mv, nc,
-nslookup, ping, poweroff, printf, ps, pwd, reboot, rm, rmdir, rmmod, sed,
+nslookup, ping, poweroff, printf, ps, pwd, reboot, renice, rm, rmdir, rmmod, sed,
 setkeycodes, sh, sleep, sort, swapoff, swapon, sync, syslogd, tail,
 tar, tee, telnet, test, touch, tr, true, tty, umount, uname, uniq, update,
 uptime, usleep, uudecode, uuencode, wc, which, whoami, yes, zcat, [
@@ -1386,6 +1386,16 @@ Instructs the kernel to reboot the system.
 
 -------------------------------
 
+=item renice
+
+Usage: renice priority pid [pid ...]
+
+Changes priority of running processes. Allowed priorities range
+from 20 (the process runs only when nothing else is running) to 0
+(default priority) to -20 (almost nothing else ever gets to run).
+
+-------------------------------
+
 =item rm
 
 Usage: rm [OPTION]... FILE...
@@ -2034,4 +2044,4 @@ Enrique Zanardi <ezanardi@ull.es>
 
 =cut
 
-# $Id: busybox.pod,v 1.58 2000/07/21 15:10:57 proski Exp $
+# $Id: busybox.pod,v 1.59 2000/07/21 21:32:12 andersen Exp $
index d19ee242c59e56dbc1b679b53178315c7a61c861..f65abda6923499f3a6235cfdc52c5e1b571935ae 100644 (file)
                loadacm, loadfont, loadkmap, logger, logname, ls, lsmod,
                makedevs, mkdir, mkfifo, mkfs.minix, mknod, mkswap, mktemp,
                more, mount, mt, mv, nc, nslookup, ping, poweroff, printf, ps,
-               pwd, reboot, rm, rmdir, rmmod, sed, setkeycodes, sh, sleep,
+               pwd, reboot, renice, rm, rmdir, rmmod, sed, setkeycodes, sh, sleep,
                sort, swapoff, swapon, sync, syslogd, tail, tar, tee, telnet,
                test, touch, tr, true, tty, umount, uname, uniq, update,
                uptime, usleep, uudecode, uuencode, wc, which, whoami, yes,
                </para>
        </sect1>
 
+       <sect1 id="renice">
+           <title>renice</title>
+
+               <para>
+               Usage: renice priority pid [pid ...]
+               </para>
+
+               <para>
+               Changes priority of running processes. Allowed priorities range
+               from 20 (the process runs only when nothing else is running) to 0
+               (default priority) to -20 (almost nothing else ever gets to run).
+               </para>
+       </sect1>
+
        <sect1 id="rm">
            <title>rm</title>
 
index 4800d85125ae1cb14c28eb44927ab3fa85f1545d..7f0b7747513995e17af9be27eac92e35ebf32480 100644 (file)
@@ -177,6 +177,7 @@ extern int printf_main(int argc, char** argv);
 extern int ps_main(int argc, char** argv);
 extern int pwd_main(int argc, char** argv);
 extern int reboot_main(int argc, char** argv);
+extern int renice_main(int argc, char** argv);
 extern int rm_main(int argc, char** argv);
 extern int rmdir_main(int argc, char **argv);
 extern int rmmod_main(int argc, char** argv);
@@ -281,6 +282,7 @@ extern const char printf_usage[];
 extern const char ps_usage[];
 extern const char pwd_usage[];
 extern const char reboot_usage[];
+extern const char renice_usage[];
 extern const char rm_usage[];
 extern const char rmdir_usage[];
 extern const char rmmod_usage[];
diff --git a/procps/renice.c b/procps/renice.c
new file mode 100644 (file)
index 0000000..af7ce94
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Mini renice implementation for busybox
+ *
+ *
+ * Copyright (C) 2000 Dave 'Kill a Cop' Cinege <dcinege@psychosis.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "internal.h"
+#include <stdio.h>
+#include <errno.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+
+
+extern int renice_main(int argc, char **argv)
+{
+       int prio, err = 0;
+       
+       if (argc < 3)   usage(renice_usage);
+               
+       prio = atoi(*++argv);
+       if (prio > 20)          prio = 20;
+       if (prio < -20)         prio = -20;
+       
+       while (*++argv) {
+               int ps = atoi(*argv);
+               int oldp = getpriority(PRIO_PROCESS, ps);
+               
+               if (setpriority(PRIO_PROCESS, ps, prio) == 0) {
+                       printf("%d: old priority %d, new priority %d\n", ps, oldp, prio );
+               } else {
+                       fprintf(stderr, "renice: %d: setpriority: ", ps);
+                       perror("");
+                       err = 1;
+               }
+       }
+       exit(err);
+}
diff --git a/renice.c b/renice.c
new file mode 100644 (file)
index 0000000..af7ce94
--- /dev/null
+++ b/renice.c
@@ -0,0 +1,53 @@
+/*
+ * Mini renice implementation for busybox
+ *
+ *
+ * Copyright (C) 2000 Dave 'Kill a Cop' Cinege <dcinege@psychosis.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "internal.h"
+#include <stdio.h>
+#include <errno.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+
+
+extern int renice_main(int argc, char **argv)
+{
+       int prio, err = 0;
+       
+       if (argc < 3)   usage(renice_usage);
+               
+       prio = atoi(*++argv);
+       if (prio > 20)          prio = 20;
+       if (prio < -20)         prio = -20;
+       
+       while (*++argv) {
+               int ps = atoi(*argv);
+               int oldp = getpriority(PRIO_PROCESS, ps);
+               
+               if (setpriority(PRIO_PROCESS, ps, prio) == 0) {
+                       printf("%d: old priority %d, new priority %d\n", ps, oldp, prio );
+               } else {
+                       fprintf(stderr, "renice: %d: setpriority: ", ps);
+                       perror("");
+                       err = 1;
+               }
+       }
+       exit(err);
+}
diff --git a/usage.c b/usage.c
index 1031f24bce5c5d90dc76219bc5a1d666615fb11c..3f367f9b1e090595909365d3ebdd6d7e7a8165e9 100644 (file)
--- a/usage.c
+++ b/usage.c
@@ -859,6 +859,18 @@ const char reboot_usage[] =
        ;
 #endif
 
+       
+#if defined BB_RENICE
+const char renice_usage[] =
+       "renice priority pid [pid ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+       "\nChanges priority of running processes. Allowed priorities range\n"
+       "from 20 (the process runs only when nothing else is running) to 0\n"
+       "(default priority) to -20 (almost nothing else ever gets to run).\n"
+#endif
+       ;
+#endif
+
 #if defined BB_RM
 const char rm_usage[] =
        "rm [OPTION]... FILE...\n"