Fix printing of 64-bit counters on 32-bit ppc platforms.

Several statistic counters are uint64_t values and are printed by systat
using %lu. This results in displaying wrong numbers. Use PRIu64 instead.
While there, print variables of size_t using %zd.

MFC after:i		3 days
Differential Revision:	https://reviews.freebsd.org/D17838
This commit is contained in:
Michael Tuexen 2018-11-12 13:26:13 +00:00
parent b2b5660688
commit 970bdbf5d7
6 changed files with 23 additions and 19 deletions

View File

@ -68,9 +68,8 @@ void getsysctl(const char *name, void *ptr, size_t len)
strerror(errno));
}
if (nlen != len) {
error("sysctl(%s...) expected %lu, got %lu", name,
(unsigned long)len, (unsigned long)nlen);
}
error("sysctl(%s...) expected %zu, got %zu", name, len, nlen);
}
}
/*

View File

@ -50,6 +50,7 @@ static char sccsid[] = "@(#)mbufs.c 8.1 (Berkeley) 6/6/93";
#include <netinet/in.h>
#include <netinet/icmp6.h>
#include <inttypes.h>
#include <stdlib.h>
#include <string.h>
#include <paths.h>
@ -173,7 +174,7 @@ void
showicmp6(void)
{
struct icmp6stat stats;
u_long totalin, totalout;
uint64_t totalin, totalout;
int i;
memset(&stats, 0, sizeof stats);
@ -184,11 +185,11 @@ showicmp6(void)
}
totalin += stats.icp6s_badcode + stats.icp6s_badlen +
stats.icp6s_checksum + stats.icp6s_tooshort;
mvwprintw(wnd, 1, 0, "%9lu", totalin);
mvwprintw(wnd, 1, 35, "%9lu", totalout);
mvwprintw(wnd, 1, 0, "%9"PRIu64, totalin);
mvwprintw(wnd, 1, 35, "%9"PRIu64, totalout);
#define DO(stat, row, col) \
mvwprintw(wnd, row, col, "%9lu", stats.stat)
mvwprintw(wnd, row, col, "%9"PRIu64, stats.stat)
DO(icp6s_badcode, 2, 0);
DO(icp6s_badlen, 3, 0);

View File

@ -53,6 +53,7 @@ static const char sccsid[] = "@(#)mbufs.c 8.1 (Berkeley) 6/6/93";
#include <netinet/udp.h>
#include <netinet/udp_var.h>
#include <inttypes.h>
#include <stdlib.h>
#include <string.h>
#include <paths.h>
@ -203,16 +204,16 @@ void
showip(void)
{
struct stat stats;
u_long totalout;
uint64_t totalout;
domode(&stats);
totalout = stats.i.ips_forward + stats.i.ips_localout;
#define DO(stat, row, col) \
mvwprintw(wnd, row, col, "%9lu", stats.stat)
mvwprintw(wnd, row, col, "%9"PRIu64, stats.stat)
DO(i.ips_total, 1, 0);
mvwprintw(wnd, 1, 35, "%9lu", totalout);
mvwprintw(wnd, 1, 35, "%9"PRIu64, totalout);
DO(i.ips_badsum, 2, 0);
DO(i.ips_localout, 2, 35);
DO(i.ips_tooshort, 3, 0);

View File

@ -52,6 +52,7 @@ static const char sccsid[] = "@(#)mbufs.c 8.1 (Berkeley) 6/6/93";
#include <netinet/ip.h>
#include <netinet6/ip6_var.h>
#include <inttypes.h>
#include <stdlib.h>
#include <string.h>
#include <paths.h>
@ -190,16 +191,16 @@ void
showip6(void)
{
struct ip6stat stats;
u_long totalout;
uint64_t totalout;
domode(&stats);
totalout = stats.ip6s_forward + stats.ip6s_localout;
#define DO(stat, row, col) \
mvwprintw(wnd, row, col, "%9lu", stats.stat)
mvwprintw(wnd, row, col, "%9"PRIu64, stats.stat)
DO(ip6s_total, 1, 0);
mvwprintw(wnd, 1, 35, "%9lu", totalout);
mvwprintw(wnd, 1, 35, "%9"PRIu64, totalout);
DO(ip6s_tooshort, 2, 0);
DO(ip6s_localout, 2, 35);
DO(ip6s_toosmall, 3, 0);

View File

@ -56,6 +56,7 @@ __FBSDID("$FreeBSD$");
#include <netinet/tcp_timer.h>
#include <netinet/tcp_var.h>
#include <inttypes.h>
#include <stdlib.h>
#include <string.h>
#include <paths.h>
@ -237,7 +238,7 @@ showtcp(void)
domode(&stats);
#define DO(stat, row, col) \
mvwprintw(wnd, row, col, "%12lu", stats.stat)
mvwprintw(wnd, row, col, "%12"PRIu64, stats.stat)
#define L(row, stat) DO(stat, row, 0)
#define R(row, stat) DO(stat, row, 38)
L(1, tcps_connattempt); R(1, tcps_sndtotal);

View File

@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$");
#include <sys/types.h>
#include <sys/sysctl.h>
#include <inttypes.h>
#include <string.h>
#include "systat.h"
@ -139,11 +140,11 @@ showzarc(void)
#define DO(stat, row, col, fmt) \
mvwprintw(wnd, row, col, fmt, stat)
#define R(row, stat) DO(rate.hits.stat, row, 31+1, "%3lu")
#define H(row, stat) DO(delta.hits.stat, row, 31+1+5, "%7lu"); \
DO(curstat.hits.stat, row, 31+1+5+8+8, "%12lu")
#define M(row, stat) DO(delta.misses.stat, row, 31+1+5+8, "%7lu"); \
DO(curstat.misses.stat, row, 31+1+5+8+8+13, "%12lu")
#define R(row, stat) DO(rate.hits.stat, row, 31+1, "%3"PRIu64)
#define H(row, stat) DO(delta.hits.stat, row, 31+1+5, "%7"PRIu64); \
DO(curstat.hits.stat, row, 31+1+5+8+8, "%12"PRIu64)
#define M(row, stat) DO(delta.misses.stat, row, 31+1+5+8, "%7"PRIu64); \
DO(curstat.misses.stat, row, 31+1+5+8+8+13, "%12"PRIu64)
#define E(row, stat) R(row, stat); H(row, stat); M(row, stat);
E(1, arcstats);
E(2, arcstats_demand_data);