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}
|