From d37082b292d65d555c806b77d431b9f26a64fb32 Mon Sep 17 00:00:00 2001 From: Thomas Cort Date: Thu, 10 Oct 2013 16:29:19 -0400 Subject: [PATCH] Importing usr.bin/nice Replaces commands/nice. No Minix-specific changes needed. Change-Id: I3e089497dcd86893aa28e3a973496af5b1689f45 --- commands/Makefile | 2 +- commands/nice/Makefile | 4 - man/man1/Makefile | 2 +- man/man1/nice.1 | 26 ------- releasetools/nbsd_ports | 1 + usr.bin/Makefile | 2 +- usr.bin/nice/Makefile | 6 ++ usr.bin/nice/nice.1 | 120 ++++++++++++++++++++++++++++++ {commands => usr.bin}/nice/nice.c | 103 ++++++++++++++----------- 9 files changed, 189 insertions(+), 77 deletions(-) delete mode 100644 commands/nice/Makefile delete mode 100644 man/man1/nice.1 create mode 100644 usr.bin/nice/Makefile create mode 100644 usr.bin/nice/nice.1 rename {commands => usr.bin}/nice/nice.c (53%) diff --git a/commands/Makefile b/commands/Makefile index 6a9f98bef..f17c9df33 100644 --- a/commands/Makefile +++ b/commands/Makefile @@ -16,7 +16,7 @@ SUBDIR= add_route arp ash at backup btrace \ less loadkeys loadramdisk logger look lp \ lpd lspci mail MAKEDEV \ mesg mined mkfifo \ - mount mt netconf nice nohup \ + mount mt netconf nohup \ nonamed od paste patch \ ping postinstall poweroff pr prep printroot \ profile progressbar pr_routes ps pwdauth \ diff --git a/commands/nice/Makefile b/commands/nice/Makefile deleted file mode 100644 index e784436f1..000000000 --- a/commands/nice/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -PROG= nice -MAN= - -.include diff --git a/man/man1/Makefile b/man/man1/Makefile index c3898ee99..9692df0da 100644 --- a/man/man1/Makefile +++ b/man/man1/Makefile @@ -11,7 +11,7 @@ MAN= ash.1 at.1 \ last.1 loadfont.1 loadkeys.1 logger.1 \ look.1 lp.1 lspci.1 mail.1 \ mesg.1 mixer.1 \ - mkproto.1 mount.1 mt.1 nice.1 nohup.1 od.1 \ + mkproto.1 mount.1 mt.1 nohup.1 od.1 \ paste.1 ping.1 playwave.1 pr.1 prep.1 \ profile.1 ps.1 rcp.1 recwave.1 \ remsync.1 rget.1 rlogin.1 rsh.1 rz.1 \ diff --git a/man/man1/nice.1 b/man/man1/nice.1 deleted file mode 100644 index 0a11c185f..000000000 --- a/man/man1/nice.1 +++ /dev/null @@ -1,26 +0,0 @@ -.TH NICE 1 -.SH NAME -nice \- invoke command with higher or lower scheduling priority -.SH SYNOPSIS -\fBnice\fP [\fB\-n\fP increment] \fIutility\fP [\fIargument\fP...] -.SH DESCRIPTION -The -.B nice -utility runs \fIutility\fP at a different scheduling priority than -the default. The nicer the process is to others (the higher the -increment), the less favourable the scheduling is. Super-users -can give a negative increment, meaning scheduling is more favourable -than the default. -.SH OPTIONS -.TP -.B \-n \fIincrement -the increment value sets how nice the invoked command will be. 0 is -the same priority as regular processes. 10 is the default. -The range is -20 to 20. -.SH SEE ALSO -getpriority(2), setpriority(2) -.SH AUTHOR -This -.B nice -utility was imported from FreeBSD. This manual page was written -Ben Gras . diff --git a/releasetools/nbsd_ports b/releasetools/nbsd_ports index 1832622e3..e51468bba 100644 --- a/releasetools/nbsd_ports +++ b/releasetools/nbsd_ports @@ -178,6 +178,7 @@ 2010/10/15 05:46:48,usr.bin/mkdep 2009/08/15 20:44:56,usr.bin/mktemp 2012/10/17 12:00:00,usr.bin/nbperf +2013/10/10 12:00:00,usr.bin/nice 2012/10/17 12:00:00,usr.bin/nvi 2010/05/14 17:28:23,usr.bin/newgrp 2012/10/17 12:00:00,usr.bin/passwd diff --git a/usr.bin/Makefile b/usr.bin/Makefile index fdc0de695..69d89761a 100644 --- a/usr.bin/Makefile +++ b/usr.bin/Makefile @@ -18,7 +18,7 @@ SUBDIR= \ machine make man \ mkdep mktemp \ \ - nbperf newgrp nvi \ + nbperf newgrp nice nvi \ passwd \ printf \ rev \ diff --git a/usr.bin/nice/Makefile b/usr.bin/nice/Makefile new file mode 100644 index 000000000..0a9c4e7d4 --- /dev/null +++ b/usr.bin/nice/Makefile @@ -0,0 +1,6 @@ +# @(#)Makefile 8.1 (Berkeley) 6/6/93 +# $NetBSD: Makefile,v 1.3 1995/08/31 23:30:56 jtc Exp $ + +PROG= nice + +.include diff --git a/usr.bin/nice/nice.1 b/usr.bin/nice/nice.1 new file mode 100644 index 000000000..87c211ac0 --- /dev/null +++ b/usr.bin/nice/nice.1 @@ -0,0 +1,120 @@ +.\" $NetBSD: nice.1,v 1.15 2012/03/22 07:58:19 wiz Exp $ +.\" +.\" Copyright (c) 1980, 1990, 1993 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)nice.1 8.1 (Berkeley) 6/6/93 +.\" +.Dd June 6, 1993 +.Dt NICE 1 +.Os +.Sh NAME +.Nm nice +.Nd execute a utility with an altered scheduling priority +.Sh SYNOPSIS +.Nm +.Op Fl n Ar increment +.Ar utility +.Op Ar argument ... +.Sh DESCRIPTION +.Nm +runs +.Ar utility +at an altered scheduling priority. +If an +.Ar increment +is given, it is used; otherwise +an increment of 10 is assumed. +The super-user can run utilities with priorities higher than normal by using +a negative +.Ar increment . +The priority can be adjusted over a +range of -20 (the highest) to 20 (the lowest). +A priority of 19 or 20 +will prevent a process from taking any cycles from others at nice 0 or +better. +.Pp +Available options: +.Bl -tag -width indent +.It Fl n Ar increment +A positive or negative decimal integer used to modify the system scheduling +priority of +.Ar utility . +.El +.Sh EXIT STATUS +The +.Nm +utility exits with one of the following values: +.Bl -tag -width indent +.It 1-125 +An error occurred in the +.Nm +utility. +.It 126 +The +.Ar utility +was found but could not be invoked. +.It 127 +The +.Ar utility +could not be found. +.El +.Pp +Otherwise, the exit status of +.Nm +will be that of +.Ar utility . +.Sh COMPATIBILITY +The historic +.Fl Ns Ar increment +option has been deprecated but is still supported in this implementation. +.Sh SEE ALSO +.Xr csh 1 , +.Xr getpriority 2 , +.Xr setpriority 2 , +.Xr renice 8 +.Sh STANDARDS +The +.Nm +utility conforms to +.St -p1003.2-92 . +.Sh HISTORY +A +.Nm +utility appeared in +.At v6 . +.Sh BUGS +.Nm +is built into +.Xr csh 1 +with a slightly different syntax than described here. +The form +.Ql nice +10 +nices to positive nice, and +.Ql nice \-10 +can be used +by the super-user to give a process more of the processor. diff --git a/commands/nice/nice.c b/usr.bin/nice/nice.c similarity index 53% rename from commands/nice/nice.c rename to usr.bin/nice/nice.c index db251633f..de5fe5b0c 100644 --- a/commands/nice/nice.c +++ b/usr.bin/nice/nice.c @@ -1,6 +1,8 @@ +/* $NetBSD: nice.c,v 1.15 2008/07/21 14:19:24 lukem Exp $ */ + /* - * Copyright (c) 1989, 1993, 1994 - * The Regents of the University of California. All rights reserved. + * Copyright (c) 1989 The Regents of the University of California. + * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -10,11 +12,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -31,50 +29,67 @@ * SUCH DAMAGE. */ -#include +#include +#ifndef lint +__COPYRIGHT("@(#) Copyright (c) 1989\ + The Regents of the University of California. All rights reserved."); +#endif /* not lint */ + +#ifndef lint +#if 0 +static char sccsid[] = "@(#)nice.c 5.4 (Berkeley) 6/1/90"; +#endif +__RCSID("$NetBSD: nice.c,v 1.15 2008/07/21 14:19:24 lukem Exp $"); +#endif /* not lint */ + #include #include -#include -#include -#include #include #include -#include #include +#include +#include +#include +#include +#include +#include #define DEFNICE 10 -void usage(void); +static void usage(void) __dead; int -main(int argc, char *argv[]) +main(int argc, char **argv) { - long niceness = DEFNICE; - int ch; char *ep; - char arg1[10]; + int niceness = DEFNICE; + int c; + long tmp; - /* Obsolescent syntax: -number, --number */ - if (argc >= 2 && argv[1][0] == '-' && (argv[1][1] == '-' || - isdigit((unsigned char)argv[1][1])) && strcmp(argv[1], "--") != 0) { - snprintf(arg1, sizeof(arg1), "-n%s", argv[1] + 1); - argv[1] = arg1; - } + setprogname(argv[0]); + (void)setlocale(LC_ALL, ""); - while ((ch = getopt(argc, argv, "n:")) != -1) { - switch (ch) { + /* handle obsolete -number syntax */ + if (argc > 1 && argv[1][0] == '-' && + isdigit((unsigned char)argv[1][1])) { + niceness = atoi (argv[1] + 1); + argc--; argv++; + } + + while ((c = getopt (argc, argv, "n:")) != -1) { + switch (c) { case 'n': errno = 0; - niceness = strtol(optarg, &ep, 10); - if (ep == optarg || *ep != '\0' || errno || - niceness < INT_MIN || niceness > INT_MAX) { - fprintf(stderr, "%s: invalid nice value", optarg); - return 1; - } + tmp = strtol(optarg, &ep, 10); + if (*ep != '\0' || tmp < INT_MIN || tmp > INT_MAX) + errx(EXIT_FAILURE, "invalid argument: `%s'", + optarg); + niceness = (int)tmp; break; default: usage(); + break; } } argc -= optind; @@ -86,23 +101,23 @@ main(int argc, char *argv[]) errno = 0; niceness += getpriority(PRIO_PROCESS, 0); if (errno) { - perror("getpriority"); - return 1; + err(EXIT_FAILURE, "getpriority"); + /* NOTREACHED */ } - if (setpriority(PRIO_PROCESS, 0, (int)niceness)) { - perror("setpriority"); - return 1; + if (setpriority(PRIO_PROCESS, 0, niceness) == -1) { + warn("setpriority"); } - errno = 0; - execvp(*argv, argv); - perror("execvp"); - return 1; + + (void)execvp(argv[0], &argv[0]); + err((errno == ENOENT || errno == ENOTDIR) ? 127 : 126, "%s", argv[0]); + /* NOTREACHED */ } -void +static void usage(void) { - - (void)fprintf(stderr, "usage: nice [-n incr] utility [arguments]\n"); - exit(1); + (void)fprintf(stderr, + "Usage: %s [ -n increment ] utility [ argument ...]\n", + getprogname()); + exit(EXIT_FAILURE); }