schedutils: fix chrt docs and pid=0 usage

Fix some documentation bugs for chrt.
Make it work with PID 0, which means current process.

Signed-off-by: Matthias Koenig <mkoenig@suse.de>
This commit is contained in:
Matthias Koenig 2007-07-16 13:10:59 +02:00 committed by Karel Zak
parent dfcd918b6e
commit 697d58e867
2 changed files with 9 additions and 7 deletions

View File

@ -79,13 +79,13 @@ output version information and exit
.SH USAGE .SH USAGE
.TP .TP
The default behavior is to run a new command:: The default behavior is to run a new command::
chrt [prio] [command] [arguments] chrt prio command [arguments]
.TP .TP
You can also retrieve the real-time attributes of an existing task: You can also retrieve the real-time attributes of an existing task:
chrt -p [pid] chrt -p pid
.TP .TP
Or set them: Or set them:
chrt -p [prio] [pid] chrt -p prio pid
.SH PERMISSIONS .SH PERMISSIONS
A user must possess A user must possess
.BR CAP_SYS_NICE .BR CAP_SYS_NICE

View File

@ -46,7 +46,7 @@ static void show_usage(const char *cmd)
fprintf(stderr, " -b, --batch " fprintf(stderr, " -b, --batch "
"set policy to SCHED_BATCH\n"); "set policy to SCHED_BATCH\n");
fprintf(stderr, " -f, --fifo " fprintf(stderr, " -f, --fifo "
"set policy to SCHED_FF\n"); "set policy to SCHED_FIFO\n");
fprintf(stderr, " -p, --pid " fprintf(stderr, " -p, --pid "
"operate on existing given pid\n"); "operate on existing given pid\n");
fprintf(stderr, " -m, --max " fprintf(stderr, " -m, --max "
@ -146,7 +146,7 @@ int main(int argc, char *argv[])
{ {
int i, policy = SCHED_RR, priority = 0, verbose = 0; int i, policy = SCHED_RR, priority = 0, verbose = 0;
struct sched_param sp; struct sched_param sp;
pid_t pid = 0; pid_t pid = -1;
struct option longopts[] = { struct option longopts[] = {
{ "batch", 0, NULL, 'b' }, { "batch", 0, NULL, 'b' },
@ -205,12 +205,12 @@ int main(int argc, char *argv[])
} }
if ((pid && argc - optind < 1) || (!pid && argc - optind < 2)) { if (((pid > -1) && argc - optind < 1) || ((pid == -1) && argc - optind < 2)) {
show_usage(argv[0]); show_usage(argv[0]);
return 1; return 1;
} }
if (pid && (verbose || argc - optind == 1)) { if ((pid > -1) && (verbose || argc - optind == 1)) {
show_rt_info("current", pid); show_rt_info("current", pid);
if (argc - optind == 1) if (argc - optind == 1)
return 0; return 0;
@ -224,6 +224,8 @@ int main(int argc, char *argv[])
return 1; return 1;
} }
if (pid == -1)
pid = 0;
sp.sched_priority = priority; sp.sched_priority = priority;
if (sched_setscheduler(pid, policy, &sp) == -1) { if (sched_setscheduler(pid, policy, &sp) == -1) {
perror("sched_setscheduler"); perror("sched_setscheduler");