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:
parent
dfcd918b6e
commit
697d58e867
|
@ -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
|
||||||
|
|
|
@ -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");
|
||||||
|
|
Loading…
Reference in New Issue