summaryrefslogtreecommitdiffstats
path: root/schedutils
diff options
context:
space:
mode:
authorKarel Zak2017-02-10 11:46:37 +0100
committerKarel Zak2017-02-10 11:46:37 +0100
commit6433fcad71fc0ab46a99cba3281c5461d0f05391 (patch)
tree9757ac040a0cc8ea3d365b37feecc935d05bc768 /schedutils
parentblkreset: remove "LBA" from usage() (diff)
downloadkernel-qcow2-util-linux-6433fcad71fc0ab46a99cba3281c5461d0f05391.tar.gz
kernel-qcow2-util-linux-6433fcad71fc0ab46a99cba3281c5461d0f05391.tar.xz
kernel-qcow2-util-linux-6433fcad71fc0ab46a99cba3281c5461d0f05391.zip
taskset: don't use zero PID in messages
The pid 0 is technically correct, but very confusing for end users. Use getpid() in the messages. Addresses: https://github.com/karelzak/util-linux/issues/413 Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'schedutils')
-rw-r--r--schedutils/taskset.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/schedutils/taskset.c b/schedutils/taskset.c
index 199d62566..b117b1c85 100644
--- a/schedutils/taskset.c
+++ b/schedutils/taskset.c
@@ -98,7 +98,17 @@ static void print_affinity(struct taskset *ts, int isnew)
if (!str)
errx(EXIT_FAILURE, _("internal error: conversion from cpuset to string failed"));
- printf(msg, ts->pid, str);
+ printf(msg, ts->pid ? ts->pid : getpid(), str);
+}
+
+static void __attribute__((__noreturn__)) err_affinity(pid_t pid, int set)
+{
+ char *msg;
+
+ msg = set ? _("failed to set pid %d's affinity") :
+ _("failed to get pid %d's affinity");
+
+ err(EXIT_FAILURE, msg, pid ? pid : getpid());
}
static void do_taskset(struct taskset *ts, size_t setsize, cpu_set_t *set)
@@ -106,8 +116,7 @@ static void do_taskset(struct taskset *ts, size_t setsize, cpu_set_t *set)
/* read the current mask */
if (ts->pid) {
if (sched_getaffinity(ts->pid, ts->setsize, ts->set) < 0)
- err(EXIT_FAILURE, _("failed to get pid %d's affinity"),
- ts->pid);
+ err_affinity(ts->pid, 1);
print_affinity(ts, FALSE);
}
@@ -116,14 +125,12 @@ static void do_taskset(struct taskset *ts, size_t setsize, cpu_set_t *set)
/* set new mask */
if (sched_setaffinity(ts->pid, setsize, set) < 0)
- err(EXIT_FAILURE, _("failed to set pid %d's affinity"),
- ts->pid);
+ err_affinity(ts->pid, 1);
/* re-read the current mask */
if (ts->pid) {
if (sched_getaffinity(ts->pid, ts->setsize, ts->set) < 0)
- err(EXIT_FAILURE, _("failed to get pid %d's affinity"),
- ts->pid);
+ err_affinity(ts->pid, 0);
print_affinity(ts, TRUE);
}
}