Deleted Added
full compact
rtprio.c (2447) rtprio.c (3291)
1/*
1/*
2 * Copyright (c) 1994 The Regents of the University of California.
2 * Copyright (c) 1994 David Greenman
3 * Copyright (c) 1994 Henrik Vestergaard Draboel (hvd@terry.ping.dk)
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. All advertising materials mentioning features or use of this software
14 * must display the following acknowledgement:
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. All advertising materials mentioning features or use of this software
15 * must display the following acknowledgement:
15 * This product includes software developed by the University of
16 * California, Berkeley and its contributors.
17 * 4. Neither the name of the University nor the names of its contributors
16 * This product includes software developed by Henrik Vestergaard Draboel.
17 * This product includes software developed by David Greenman.
18 * 4. Neither the names of the authors nor the names of contributors
18 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission.
20 *
19 * may be used to endorse or promote products derived from this software
20 * without specific prior written permission.
21 *
21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
33 *
34 * $Id$
32 */
33
35 */
36
34/* Copyright (c) 1994 Henrik Vestergaard Drab�l (hvd@terry.pping.dk) */
35
36#ifndef lint
37char copyright[] =
38"@(#) Copyright (c) 1989 The Regents of the University of California.\n\
39 All rights reserved.\n";
40#endif /* not lint */
41
42#ifndef lint
43/*static char sccsid[] = "from: @(#)rtprio.c 5.4 (Berkeley) 6/1/90";*/
44static char rcsid[] = "$Id: rtprio.c,v 1.2 1993/11/23 00:02:23 jtc Exp $";
45#endif /* not lint */
46
47#include <sys/time.h>
48#include <stdio.h>
37#include <sys/param.h>
49#include <sys/rtprio.h>
38#include <sys/rtprio.h>
50#include <locale.h>
51#include <errno.h>
52#include <err.h>
39#include <sys/errno.h>
53
40
41#include <stdio.h>
54#include <stdlib.h>
55#include <string.h>
56#include <ctype.h>
57#include <unistd.h>
58
59static void usage();
60
61int
62main(argc, argv)
42#include <stdlib.h>
43#include <string.h>
44#include <ctype.h>
45#include <unistd.h>
46
47static void usage();
48
49int
50main(argc, argv)
63 int argc;
64 char **argv;
51 int argc;
52 char **argv;
65{
53{
66 int nrtprio = RTPRIO_RTOFF;
67 int proc=0;
54 char *p;
55 int proc = 0;
56 struct rtprio rtp;
68
57
69 setlocale(LC_ALL, "");
70 errno = 0;
58 /* find basename */
59 if ((p = rindex(argv[0], '/')) == NULL)
60 p = argv[0];
61 else
62 ++p;
71
63
64 if (!strcmp(p, "rtprio"))
65 rtp.type = RTP_PRIO_REALTIME;
66 else if (!strcmp(p, "idprio"))
67 rtp.type = RTP_PRIO_IDLE;
68
72 switch (argc) {
69 switch (argc) {
73 case 2:
74 proc = abs(atoi(argv[1]));
70 case 2:
71 proc = abs(atoi(argv[1])); /* Should check if numeric
72 * arg! */
75 /* FALLTHROUGH */
73 /* FALLTHROUGH */
76
77 case 1:
74 case 1:
78 nrtprio = rtprio(proc,RTPRIO_NOCHG);
79 fprintf(stderr,"rtprio: %d %s\n",
80 nrtprio,
81 nrtprio==RTPRIO_RTOFF?"(RTOFF)":"");
82 exit(nrtprio);
83 /* NOTREACHED */
84
85 default: {
86 switch (argv[1][0]) {
87 case '-':
88 if (strcmp(argv[1],"-t")==0)
89 nrtprio = RTPRIO_RTOFF;
90 else
91 usage();
92 break;
93
94 case '0':case '1':case '2':case '3':case '4':
95 case '5':case '6':case '7':case '8':case '9':
96 nrtprio = atoi (argv[1]);
97
98 if (errno== ERANGE) usage();
99 break;
100
75 if (rtprio(RTP_LOOKUP, proc, &rtp) != 0) {
76 perror(argv[0]);
77 exit (1);
78 }
79 printf("%s: ", p);
80 switch (rtp.type) {
81 case RTP_PRIO_REALTIME:
82 printf("realtime priority %d\n", rtp.prio);
83 break;
84 case RTP_PRIO_NORMAL:
85 printf("normal priority\n");
86 break;
87 case RTP_PRIO_IDLE:
88 printf("idle priority %d\n", rtp.prio);
89 break;
101 default:
90 default:
102 usage();
103 break;
91 printf("invalid priority type %d\n", rtp.type);
92 break;
104 }
93 }
105 switch (argv[2][0]) {
106 case '-':
107 proc = -atoi(argv[2]);
108
109 break;
94 exit(0);
95 default:
96 if (argv[1][0] == '-' || isdigit(argv[1][0])) {
97 if (argv[1][0] == '-') {
98 if (strcmp(argv[1], "-t") == 0) {
99 rtp.type = RTP_PRIO_NORMAL;
100 rtp.prio = 0;
101 } else {
102 usage(p);
103 break;
104 }
105 } else {
106 rtp.prio = atoi(argv[1]);
107 }
108 } else {
109 usage(p);
110 break;
110 }
111 }
111
112 errno = 0;
113
112
114 nrtprio = rtprio(proc, nrtprio);
113 if (argv[2][0] == '-')
114 proc = -atoi(argv[2]);
115
115
116 if (errno) {
117 err (1, "rtprio");
118 /* NOTREACHED */
119 }
116 if (rtprio(RTP_SET, proc, &rtp) != 0) {
117 perror(argv[0]);
118 exit (1);
119 }
120
120
121 if (proc == 0) {
122 execvp(argv[2], &argv[2]);
123 err ((errno == ENOENT) ? 127 : 126, "%s", argv[2]);}
124 /* NOTREACHED */
125 }
121 if (proc == 0) {
122 execvp(argv[2], &argv[2]);
123 perror(argv[0]);
124 exit (1);
125 }
126 }
126 }
127return(nrtprio);
127 exit (1);
128}
129
130static void
128}
129
130static void
131usage()
131usage(basename)
132 char *basename;
132{
133{
133 (void)fprintf(stderr, "usage: rtprio\n");
134 (void)fprintf(stderr, "usage: rtprio [-] pid\n");
135 (void)fprintf(stderr, "usage: rtprio priority command [ args ] \n");
136 (void)fprintf(stderr, "usage: rtprio priority -pid \n");
137 (void)fprintf(stderr, "usage: rtprio -t command [ args ] \n");
138 (void)fprintf(stderr, "usage: rtprio -t -pid \n");
139
134 (void) fprintf(stderr, "usage: %s\n", basename);
135 (void) fprintf(stderr, "usage: %s [-]pid\n", basename);
136 (void) fprintf(stderr, "usage: %s priority command [ args ] \n", basename);
137 (void) fprintf(stderr, "usage: %s priority -pid \n", basename);
138 (void) fprintf(stderr, "usage: %s -t command [ args ] \n", basename);
139 (void) fprintf(stderr, "usage: %s -t -pid \n", basename);
140
140 exit(-1);
141}
141 exit(-1);
142}