mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-11-10 19:39:54 +01:00
perf tools: Use scnprintf where applicable
Several places were expecting that the value returned was the number of characters printed, not what would be printed if there was space. Fix it by using the scnprintf and vscnprintf variants we inherited from the kernel sources. Some corner cases where the number of printed characters were not accounted were fixed too. Reported-by: Anton Blanchard <[email protected]> Cc: Anton Blanchard <[email protected]> Cc: Eric B Munson <[email protected]> Cc: David Ahern <[email protected]> Cc: Frederic Weisbecker <[email protected]> Cc: Mike Galbraith <[email protected]> Cc: Paul Mackerras <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Stephane Eranian <[email protected]> Cc: Yanmin Zhang <[email protected]> Cc: [email protected] Link: http://lkml.kernel.org/n/[email protected] Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
This commit is contained in:
1 parent
b832796caa
commit
e7f01d1e3d
8 files changed
+35
-33
No files matched your search
@@ -25,7 +25,7 @@ get_cpuid(char *buffer, size_t sz)
|
||||
|
||||
pvr = mfspr(SPRN_PVR);
|
||||
|
||||
nb = snprintf(buffer, sz, "%lu,%lu$", PVR_VER(pvr), PVR_REV(pvr));
|
||||
nb = scnprintf(buffer, sz, "%lu,%lu$", PVR_VER(pvr), PVR_REV(pvr));
|
||||
|
||||
/* look for end marker to ensure the entire data fit */
|
||||
if (strchr(buffer, '$')) {
|
||||
|
||||
@@ -48,7 +48,7 @@ get_cpuid(char *buffer, size_t sz)
|
||||
if (family >= 0x6)
|
||||
model += ((a >> 16) & 0xf) << 4;
|
||||
}
|
||||
nb = snprintf(buffer, sz, "%s,%u,%u,%u$", vendor, family, model, step);
|
||||
nb = scnprintf(buffer, sz, "%s,%u,%u,%u$", vendor, family, model, step);
|
||||
|
||||
/* look for end marker to ensure the entire data fit */
|
||||
if (strchr(buffer, '$')) {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include <linux/kernel.h>
|
||||
#include "cache.h"
|
||||
#include "color.h"
|
||||
|
||||
@@ -182,12 +183,12 @@ static int __color_vsnprintf(char *bf, size_t size, const char *color,
|
||||
}
|
||||
|
||||
if (perf_use_color_default && *color)
|
||||
r += snprintf(bf, size, "%s", color);
|
||||
r += vsnprintf(bf + r, size - r, fmt, args);
|
||||
r += scnprintf(bf, size, "%s", color);
|
||||
r += vscnprintf(bf + r, size - r, fmt, args);
|
||||
if (perf_use_color_default && *color)
|
||||
r += snprintf(bf + r, size - r, "%s", PERF_COLOR_RESET);
|
||||
r += scnprintf(bf + r, size - r, "%s", PERF_COLOR_RESET);
|
||||
if (trail)
|
||||
r += snprintf(bf + r, size - r, "%s", trail);
|
||||
r += scnprintf(bf + r, size - r, "%s", trail);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
@@ -280,7 +280,7 @@ int build_id_cache__add_s(const char *sbuild_id, const char *debugdir,
|
||||
if (realname == NULL || filename == NULL || linkname == NULL)
|
||||
goto out_free;
|
||||
|
||||
len = snprintf(filename, size, "%s%s%s",
|
||||
len = scnprintf(filename, size, "%s%s%s",
|
||||
debugdir, is_kallsyms ? "/" : "", realname);
|
||||
if (mkdir_p(filename, 0755))
|
||||
goto out_free;
|
||||
@@ -295,7 +295,7 @@ int build_id_cache__add_s(const char *sbuild_id, const char *debugdir,
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
len = snprintf(linkname, size, "%s/.build-id/%.2s",
|
||||
len = scnprintf(linkname, size, "%s/.build-id/%.2s",
|
||||
debugdir, sbuild_id);
|
||||
|
||||
if (access(linkname, X_OK) && mkdir_p(linkname, 0755))
|
||||
|
||||
+15
-15
@@ -768,7 +768,7 @@ static int hist_entry__pcnt_snprintf(struct hist_entry *he, char *s,
|
||||
sep ? "%.2f" : " %6.2f%%",
|
||||
(period * 100.0) / total);
|
||||
else
|
||||
ret = snprintf(s, size, sep ? "%.2f" : " %6.2f%%",
|
||||
ret = scnprintf(s, size, sep ? "%.2f" : " %6.2f%%",
|
||||
(period * 100.0) / total);
|
||||
if (symbol_conf.show_cpu_utilization) {
|
||||
ret += percent_color_snprintf(s + ret, size - ret,
|
||||
@@ -791,20 +791,20 @@ static int hist_entry__pcnt_snprintf(struct hist_entry *he, char *s,
|
||||
}
|
||||
}
|
||||
} else
|
||||
ret = snprintf(s, size, sep ? "%" PRIu64 : "%12" PRIu64 " ", period);
|
||||
ret = scnprintf(s, size, sep ? "%" PRIu64 : "%12" PRIu64 " ", period);
|
||||
|
||||
if (symbol_conf.show_nr_samples) {
|
||||
if (sep)
|
||||
ret += snprintf(s + ret, size - ret, "%c%" PRIu64, *sep, nr_events);
|
||||
ret += scnprintf(s + ret, size - ret, "%c%" PRIu64, *sep, nr_events);
|
||||
else
|
||||
ret += snprintf(s + ret, size - ret, "%11" PRIu64, nr_events);
|
||||
ret += scnprintf(s + ret, size - ret, "%11" PRIu64, nr_events);
|
||||
}
|
||||
|
||||
if (symbol_conf.show_total_period) {
|
||||
if (sep)
|
||||
ret += snprintf(s + ret, size - ret, "%c%" PRIu64, *sep, period);
|
||||
ret += scnprintf(s + ret, size - ret, "%c%" PRIu64, *sep, period);
|
||||
else
|
||||
ret += snprintf(s + ret, size - ret, " %12" PRIu64, period);
|
||||
ret += scnprintf(s + ret, size - ret, " %12" PRIu64, period);
|
||||
}
|
||||
|
||||
if (pair_hists) {
|
||||
@@ -819,25 +819,25 @@ static int hist_entry__pcnt_snprintf(struct hist_entry *he, char *s,
|
||||
diff = new_percent - old_percent;
|
||||
|
||||
if (fabs(diff) >= 0.01)
|
||||
snprintf(bf, sizeof(bf), "%+4.2F%%", diff);
|
||||
ret += scnprintf(bf, sizeof(bf), "%+4.2F%%", diff);
|
||||
else
|
||||
snprintf(bf, sizeof(bf), " ");
|
||||
ret += scnprintf(bf, sizeof(bf), " ");
|
||||
|
||||
if (sep)
|
||||
ret += snprintf(s + ret, size - ret, "%c%s", *sep, bf);
|
||||
ret += scnprintf(s + ret, size - ret, "%c%s", *sep, bf);
|
||||
else
|
||||
ret += snprintf(s + ret, size - ret, "%11.11s", bf);
|
||||
ret += scnprintf(s + ret, size - ret, "%11.11s", bf);
|
||||
|
||||
if (show_displacement) {
|
||||
if (displacement)
|
||||
snprintf(bf, sizeof(bf), "%+4ld", displacement);
|
||||
ret += scnprintf(bf, sizeof(bf), "%+4ld", displacement);
|
||||
else
|
||||
snprintf(bf, sizeof(bf), " ");
|
||||
ret += scnprintf(bf, sizeof(bf), " ");
|
||||
|
||||
if (sep)
|
||||
ret += snprintf(s + ret, size - ret, "%c%s", *sep, bf);
|
||||
ret += scnprintf(s + ret, size - ret, "%c%s", *sep, bf);
|
||||
else
|
||||
ret += snprintf(s + ret, size - ret, "%6.6s", bf);
|
||||
ret += scnprintf(s + ret, size - ret, "%6.6s", bf);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -855,7 +855,7 @@ int hist_entry__snprintf(struct hist_entry *he, char *s, size_t size,
|
||||
if (se->elide)
|
||||
continue;
|
||||
|
||||
ret += snprintf(s + ret, size - ret, "%s", sep ?: " ");
|
||||
ret += scnprintf(s + ret, size - ret, "%s", sep ?: " ");
|
||||
ret += se->se_snprintf(he, s + ret, size - ret,
|
||||
hists__col_len(hists, se->se_width_idx));
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "cache.h"
|
||||
#include <linux/kernel.h>
|
||||
|
||||
int prefixcmp(const char *str, const char *prefix)
|
||||
{
|
||||
@@ -89,14 +90,14 @@ void strbuf_addf(struct strbuf *sb, const char *fmt, ...)
|
||||
if (!strbuf_avail(sb))
|
||||
strbuf_grow(sb, 64);
|
||||
va_start(ap, fmt);
|
||||
len = vsnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap);
|
||||
len = vscnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap);
|
||||
va_end(ap);
|
||||
if (len < 0)
|
||||
die("your vsnprintf is broken");
|
||||
die("your vscnprintf is broken");
|
||||
if (len > strbuf_avail(sb)) {
|
||||
strbuf_grow(sb, len);
|
||||
va_start(ap, fmt);
|
||||
len = vsnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap);
|
||||
len = vscnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap);
|
||||
va_end(ap);
|
||||
if (len > strbuf_avail(sb)) {
|
||||
die("this should not happen, your snprintf is broken");
|
||||
|
||||
@@ -837,15 +837,15 @@ static int hists__browser_title(struct hists *self, char *bf, size_t size,
|
||||
unsigned long nr_events = self->stats.nr_events[PERF_RECORD_SAMPLE];
|
||||
|
||||
nr_events = convert_unit(nr_events, &unit);
|
||||
printed = snprintf(bf, size, "Events: %lu%c %s", nr_events, unit, ev_name);
|
||||
printed = scnprintf(bf, size, "Events: %lu%c %s", nr_events, unit, ev_name);
|
||||
|
||||
if (thread)
|
||||
printed += snprintf(bf + printed, size - printed,
|
||||
printed += scnprintf(bf + printed, size - printed,
|
||||
", Thread: %s(%d)",
|
||||
(thread->comm_set ? thread->comm : ""),
|
||||
thread->pid);
|
||||
if (dso)
|
||||
printed += snprintf(bf + printed, size - printed,
|
||||
printed += scnprintf(bf + printed, size - printed,
|
||||
", DSO: %s", dso->short_name);
|
||||
return printed;
|
||||
}
|
||||
@@ -1095,7 +1095,7 @@ static void perf_evsel_menu__write(struct ui_browser *browser,
|
||||
HE_COLORSET_NORMAL);
|
||||
|
||||
nr_events = convert_unit(nr_events, &unit);
|
||||
printed = snprintf(bf, sizeof(bf), "%lu%c%s%s", nr_events,
|
||||
printed = scnprintf(bf, sizeof(bf), "%lu%c%s%s", nr_events,
|
||||
unit, unit == ' ' ? "" : " ", ev_name);
|
||||
slsmg_printf("%s", bf);
|
||||
|
||||
@@ -1105,8 +1105,8 @@ static void perf_evsel_menu__write(struct ui_browser *browser,
|
||||
if (!current_entry)
|
||||
ui_browser__set_color(browser, HE_COLORSET_TOP);
|
||||
nr_events = convert_unit(nr_events, &unit);
|
||||
snprintf(bf, sizeof(bf), ": %ld%c%schunks LOST!", nr_events,
|
||||
unit, unit == ' ' ? "" : " ");
|
||||
printed += scnprintf(bf, sizeof(bf), ": %ld%c%schunks LOST!",
|
||||
nr_events, unit, unit == ' ' ? "" : " ");
|
||||
warn = bf;
|
||||
}
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ int ui_helpline__show_help(const char *format, va_list ap)
|
||||
static int backlog;
|
||||
|
||||
pthread_mutex_lock(&ui__lock);
|
||||
ret = vsnprintf(ui_helpline__last_msg + backlog,
|
||||
ret = vscnprintf(ui_helpline__last_msg + backlog,
|
||||
sizeof(ui_helpline__last_msg) - backlog, format, ap);
|
||||
backlog += ret;
|
||||
|
||||
|
||||
Reference in new issue
Block a user