From a06317d49163aef13ce3dcb11e35998c5663914d Mon Sep 17 00:00:00 2001 From: Sebastien GODARD Date: Sun, 28 Aug 2016 16:04:32 +0200 Subject: [PATCH] Reuse hdr_line string for activities title line Struct activity has a field named hdr_line which was used to display the list of fields displayed by sadf -d. Reuse it to display the periodic activity header line in sar's output. Signed-off-by: Sebastien GODARD --- activity.c | 179 ++++++++++++++++++++++++++++++++------------- pr_stats.c | 208 +++++++++++++++++++++++++++-------------------------- sa.h | 4 ++ 3 files changed, 239 insertions(+), 152 deletions(-) diff --git a/activity.c b/activity.c index 2b8863b..e759e58 100644 --- a/activity.c +++ b/activity.c @@ -83,13 +83,15 @@ struct activity cpu_act = { .f_print = print_cpu_stats, .f_print_avg = print_cpu_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "CPU;%user;%nice;%system;%iowait;%steal;%idle|" + "CPU;%usr;%nice;%sys;%iowait;%steal;%irq;%soft;%guest;%gnice;%idle", +#endif #ifdef SOURCE_SADF .f_render = render_cpu_stats, .f_xml_print = xml_print_cpu_stats, .f_json_print = json_print_cpu_stats, .f_svg_print = svg_print_cpu_stats, - .hdr_line = "CPU;%user;%nice;%system;%iowait;%steal;%idle|" - "CPU;%usr;%nice;%sys;%iowait;%steal;%irq;%soft;%guest;%gnice;%idle", .name = "A_CPU", .g_nr = 1, #endif @@ -118,12 +120,14 @@ struct activity pcsw_act = { .f_print = print_pcsw_stats, .f_print_avg = print_pcsw_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "proc/s;cswch/s", +#endif #ifdef SOURCE_SADF .f_render = render_pcsw_stats, .f_xml_print = xml_print_pcsw_stats, .f_json_print = json_print_pcsw_stats, .f_svg_print = svg_print_pcsw_stats, - .hdr_line = "proc/s;cswch/s", .name = "A_PCSW", .g_nr = 2, #endif @@ -152,11 +156,13 @@ struct activity irq_act = { .f_print = print_irq_stats, .f_print_avg = print_irq_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "INTR;intr/s", +#endif #ifdef SOURCE_SADF .f_render = render_irq_stats, .f_xml_print = xml_print_irq_stats, .f_json_print = json_print_irq_stats, - .hdr_line = "INTR;intr/s", .name = "A_IRQ", .g_nr = 0, #endif @@ -185,12 +191,14 @@ struct activity swap_act = { .f_print = print_swap_stats, .f_print_avg = print_swap_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "pswpin/s;pswpout/s", +#endif #ifdef SOURCE_SADF .f_render = render_swap_stats, .f_xml_print = xml_print_swap_stats, .f_json_print = json_print_swap_stats, .f_svg_print = svg_print_swap_stats, - .hdr_line = "pswpin/s;pswpout/s", .name = "A_SWAP", .g_nr = 1, #endif @@ -219,13 +227,15 @@ struct activity paging_act = { .f_print = print_paging_stats, .f_print_avg = print_paging_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "pgpgin/s;pgpgout/s;fault/s;majflt/s;" + "pgfree/s;pgscank/s;pgscand/s;pgsteal/s;%vmeff", +#endif #ifdef SOURCE_SADF .f_render = render_paging_stats, .f_xml_print = xml_print_paging_stats, .f_json_print = json_print_paging_stats, .f_svg_print = svg_print_paging_stats, - .hdr_line = "pgpgin/s;pgpgout/s;fault/s;majflt/s;" - "pgfree/s;pgscank/s;pgscand/s;pgsteal/s;%vmeff", .name = "A_PAGE", .g_nr = 3, #endif @@ -254,12 +264,14 @@ struct activity io_act = { .f_print = print_io_stats, .f_print_avg = print_io_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "tps;rtps;wtps;bread/s;bwrtn/s", +#endif #ifdef SOURCE_SADF .f_render = render_io_stats, .f_xml_print = xml_print_io_stats, .f_json_print = json_print_io_stats, .f_svg_print = svg_print_io_stats, - .hdr_line = "tps;rtps;wtps;bread/s;bwrtn/s", .name = "A_IO", .g_nr = 2, #endif @@ -288,14 +300,16 @@ struct activity memory_act = { .f_print = print_memory_stats, .f_print_avg = print_avg_memory_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "frmpg/s;bufpg/s;campg/s|" + "kbmemfree;kbmemused;%memused;kbbuffers;kbcached;kbcommit;%commit;kbactive;kbinact;kbdirty&kbanonpg;kbslab;kbkstack;kbpgtbl;kbvmused|" + "kbswpfree;kbswpused;%swpused;kbswpcad;%swpcad", +#endif #ifdef SOURCE_SADF .f_render = render_memory_stats, .f_xml_print = xml_print_memory_stats, .f_json_print = json_print_memory_stats, .f_svg_print = svg_print_memory_stats, - .hdr_line = "frmpg/s;bufpg/s;campg/s|" - "kbmemfree;kbmemused;%memused;kbbuffers;kbcached;kbcommit;%commit;kbactive;kbinact;kbdirty&kbanonpg;kbslab;kbkstack;kbpgtbl;kbvmused|" - "kbswpfree;kbswpused;%swpused;kbswpcad;%swpcad", .name = "A_MEMORY", .g_nr = 9, #endif @@ -324,12 +338,14 @@ struct activity ktables_act = { .f_print = print_ktables_stats, .f_print_avg = print_avg_ktables_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "dentunusd;file-nr;inode-nr;pty-nr", +#endif #ifdef SOURCE_SADF .f_render = render_ktables_stats, .f_xml_print = xml_print_ktables_stats, .f_json_print = json_print_ktables_stats, .f_svg_print = svg_print_ktables_stats, - .hdr_line = "dentunusd;file-nr;inode-nr;pty-nr", .name = "A_KTABLES", .g_nr = 2, #endif @@ -358,12 +374,14 @@ struct activity queue_act = { .f_print = print_queue_stats, .f_print_avg = print_avg_queue_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "runq-sz;plist-sz;ldavg-1;ldavg-5;ldavg-15;blocked", +#endif #ifdef SOURCE_SADF .f_render = render_queue_stats, .f_xml_print = xml_print_queue_stats, .f_json_print = json_print_queue_stats, .f_svg_print = svg_print_queue_stats, - .hdr_line = "runq-sz;plist-sz;ldavg-1;ldavg-5;ldavg-15;blocked", .name = "A_QUEUE", .g_nr = 3, #endif @@ -392,11 +410,13 @@ struct activity serial_act = { .f_print = print_serial_stats, .f_print_avg = print_serial_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "TTY;rcvin/s;txmtin/s;framerr/s;prtyerr/s;brk/s;ovrun/s", +#endif #ifdef SOURCE_SADF .f_render = render_serial_stats, .f_xml_print = xml_print_serial_stats, .f_json_print = json_print_serial_stats, - .hdr_line = "TTY;rcvin/s;txmtin/s;framerr/s;prtyerr/s;brk/s;ovrun/s", .name = "A_SERIAL", .g_nr = 0, #endif @@ -425,12 +445,14 @@ struct activity disk_act = { .f_print = print_disk_stats, .f_print_avg = print_disk_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "DEV;tps;rd_sec/s;wr_sec/s;avgrq-sz;avgqu-sz;await;svctm;%util", +#endif #ifdef SOURCE_SADF .f_render = render_disk_stats, .f_xml_print = xml_print_disk_stats, .f_json_print = json_print_disk_stats, .f_svg_print = svg_print_disk_stats, - .hdr_line = "DEV;tps;rd_sec/s;wr_sec/s;avgrq-sz;avgqu-sz;await;svctm;%util", .name = "A_DISK", .g_nr = 5, #endif @@ -459,12 +481,14 @@ struct activity net_dev_act = { .f_print = print_net_dev_stats, .f_print_avg = print_net_dev_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "IFACE;rxpck/s;txpck/s;rxkB/s;txkB/s;rxcmp/s;txcmp/s;rxmcst/s;%ifutil", +#endif #ifdef SOURCE_SADF .f_render = render_net_dev_stats, .f_xml_print = xml_print_net_dev_stats, .f_json_print = json_print_net_dev_stats, .f_svg_print = svg_print_net_dev_stats, - .hdr_line = "IFACE;rxpck/s;txpck/s;rxkB/s;txkB/s;rxcmp/s;txcmp/s;rxmcst/s;%ifutil", .name = "A_NET_DEV", .g_nr = 4, #endif @@ -493,13 +517,15 @@ struct activity net_edev_act = { .f_print = print_net_edev_stats, .f_print_avg = print_net_edev_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "IFACE;rxerr/s;txerr/s;coll/s;rxdrop/s;txdrop/s;" + "txcarr/s;rxfram/s;rxfifo/s;txfifo/s", +#endif #ifdef SOURCE_SADF .f_render = render_net_edev_stats, .f_xml_print = xml_print_net_edev_stats, .f_json_print = json_print_net_edev_stats, .f_svg_print = svg_print_net_edev_stats, - .hdr_line = "IFACE;rxerr/s;txerr/s;coll/s;rxdrop/s;txdrop/s;" - "txcarr/s;rxfram/s;rxfifo/s;txfifo/s", .name = "A_NET_EDEV", .g_nr = 4, #endif @@ -528,12 +554,14 @@ struct activity net_nfs_act = { .f_print = print_net_nfs_stats, .f_print_avg = print_net_nfs_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "call/s;retrans/s;read/s;write/s;access/s;getatt/s", +#endif #ifdef SOURCE_SADF .f_render = render_net_nfs_stats, .f_xml_print = xml_print_net_nfs_stats, .f_json_print = json_print_net_nfs_stats, .f_svg_print = svg_print_net_nfs_stats, - .hdr_line = "call/s;retrans/s;read/s;write/s;access/s;getatt/s", .name = "A_NET_NFS", .g_nr = 3, #endif @@ -562,13 +590,15 @@ struct activity net_nfsd_act = { .f_print = print_net_nfsd_stats, .f_print_avg = print_net_nfsd_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "scall/s;badcall/s;packet/s;udp/s;tcp/s;hit/s;miss/s;" + "sread/s;swrite/s;saccess/s;sgetatt/s", +#endif #ifdef SOURCE_SADF .f_render = render_net_nfsd_stats, .f_xml_print = xml_print_net_nfsd_stats, .f_json_print = json_print_net_nfsd_stats, .f_svg_print = svg_print_net_nfsd_stats, - .hdr_line = "scall/s;badcall/s;packet/s;udp/s;tcp/s;hit/s;miss/s;" - "sread/s;swrite/s;saccess/s;sgetatt/s", .name = "A_NET_NFSD", .g_nr = 5, #endif @@ -597,12 +627,14 @@ struct activity net_sock_act = { .f_print = print_net_sock_stats, .f_print_avg = print_avg_net_sock_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "totsck;tcpsck;udpsck;rawsck;ip-frag;tcp-tw", +#endif #ifdef SOURCE_SADF .f_render = render_net_sock_stats, .f_xml_print = xml_print_net_sock_stats, .f_json_print = json_print_net_sock_stats, .f_svg_print = svg_print_net_sock_stats, - .hdr_line = "totsck;tcpsck;udpsck;rawsck;ip-frag;tcp-tw", .name = "A_NET_SOCK", .g_nr = 2, #endif @@ -631,12 +663,14 @@ struct activity net_ip_act = { .f_print = print_net_ip_stats, .f_print_avg = print_net_ip_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "irec/s;fwddgm/s;idel/s;orq/s;asmrq/s;asmok/s;fragok/s;fragcrt/s", +#endif #ifdef SOURCE_SADF .f_render = render_net_ip_stats, .f_xml_print = xml_print_net_ip_stats, .f_json_print = json_print_net_ip_stats, .f_svg_print = svg_print_net_ip_stats, - .hdr_line = "irec/s;fwddgm/s;idel/s;orq/s;asmrq/s;asmok/s;fragok/s;fragcrt/s", .name = "A_NET_IP", .g_nr = 3, #endif @@ -665,12 +699,14 @@ struct activity net_eip_act = { .f_print = print_net_eip_stats, .f_print_avg = print_net_eip_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "ihdrerr/s;iadrerr/s;iukwnpr/s;idisc/s;odisc/s;onort/s;asmf/s;fragf/s", +#endif #ifdef SOURCE_SADF .f_render = render_net_eip_stats, .f_xml_print = xml_print_net_eip_stats, .f_json_print = json_print_net_eip_stats, .f_svg_print = svg_print_net_eip_stats, - .hdr_line = "ihdrerr/s;iadrerr/s;iukwnpr/s;idisc/s;odisc/s;onort/s;asmf/s;fragf/s", .name = "A_NET_EIP", .g_nr = 3, #endif @@ -699,13 +735,15 @@ struct activity net_icmp_act = { .f_print = print_net_icmp_stats, .f_print_avg = print_net_icmp_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "imsg/s;omsg/s;iech/s;iechr/s;oech/s;oechr/s;itm/s;itmr/s;otm/s;" + "otmr/s;iadrmk/s;iadrmkr/s;oadrmk/s;oadrmkr/s", +#endif #ifdef SOURCE_SADF .f_render = render_net_icmp_stats, .f_xml_print = xml_print_net_icmp_stats, .f_json_print = json_print_net_icmp_stats, .f_svg_print = svg_print_net_icmp_stats, - .hdr_line = "imsg/s;omsg/s;iech/s;iechr/s;oech/s;oechr/s;itm/s;itmr/s;otm/s;" - "otmr/s;iadrmk/s;iadrmkr/s;oadrmk/s;oadrmkr/s", .name = "A_NET_ICMP", .g_nr = 4, #endif @@ -734,13 +772,15 @@ struct activity net_eicmp_act = { .f_print = print_net_eicmp_stats, .f_print_avg = print_net_eicmp_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "ierr/s;oerr/s;idstunr/s;odstunr/s;itmex/s;otmex/s;" + "iparmpb/s;oparmpb/s;isrcq/s;osrcq/s;iredir/s;oredir/s", +#endif #ifdef SOURCE_SADF .f_render = render_net_eicmp_stats, .f_xml_print = xml_print_net_eicmp_stats, .f_json_print = json_print_net_eicmp_stats, .f_svg_print = svg_print_net_eicmp_stats, - .hdr_line = "ierr/s;oerr/s;idstunr/s;odstunr/s;itmex/s;otmex/s;" - "iparmpb/s;oparmpb/s;isrcq/s;osrcq/s;iredir/s;oredir/s", .name = "A_NET_EICMP", .g_nr = 6, #endif @@ -769,12 +809,14 @@ struct activity net_tcp_act = { .f_print = print_net_tcp_stats, .f_print_avg = print_net_tcp_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "active/s;passive/s;iseg/s;oseg/s", +#endif #ifdef SOURCE_SADF .f_render = render_net_tcp_stats, .f_xml_print = xml_print_net_tcp_stats, .f_json_print = json_print_net_tcp_stats, .f_svg_print = svg_print_net_tcp_stats, - .hdr_line = "active/s;passive/s;iseg/s;oseg/s", .name = "A_NET_TCP", .g_nr = 2, #endif @@ -803,12 +845,14 @@ struct activity net_etcp_act = { .f_print = print_net_etcp_stats, .f_print_avg = print_net_etcp_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "atmptf/s;estres/s;retrans/s;isegerr/s;orsts/s", +#endif #ifdef SOURCE_SADF .f_render = render_net_etcp_stats, .f_xml_print = xml_print_net_etcp_stats, .f_json_print = json_print_net_etcp_stats, .f_svg_print = svg_print_net_etcp_stats, - .hdr_line = "atmptf/s;estres/s;retrans/s;isegerr/s;orsts/s", .name = "A_NET_ETCP", .g_nr = 2, #endif @@ -837,12 +881,14 @@ struct activity net_udp_act = { .f_print = print_net_udp_stats, .f_print_avg = print_net_udp_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "idgm/s;odgm/s;noport/s;idgmerr/s", +#endif #ifdef SOURCE_SADF .f_render = render_net_udp_stats, .f_xml_print = xml_print_net_udp_stats, .f_json_print = json_print_net_udp_stats, .f_svg_print = svg_print_net_udp_stats, - .hdr_line = "idgm/s;odgm/s;noport/s;idgmerr/s", .name = "A_NET_UDP", .g_nr = 2, #endif @@ -871,12 +917,14 @@ struct activity net_sock6_act = { .f_print = print_net_sock6_stats, .f_print_avg = print_avg_net_sock6_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "tcp6sck;udp6sck;raw6sck;ip6-frag", +#endif #ifdef SOURCE_SADF .f_render = render_net_sock6_stats, .f_xml_print = xml_print_net_sock6_stats, .f_json_print = json_print_net_sock6_stats, .f_svg_print = svg_print_net_sock6_stats, - .hdr_line = "tcp6sck;udp6sck;raw6sck;ip6-frag", .name = "A_NET_SOCK6", .g_nr = 1, #endif @@ -905,13 +953,15 @@ struct activity net_ip6_act = { .f_print = print_net_ip6_stats, .f_print_avg = print_net_ip6_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "irec6/s;fwddgm6/s;idel6/s;orq6/s;asmrq6/s;asmok6/s;" + "imcpck6/s;omcpck6/s;fragok6/s;fragcr6/s", +#endif #ifdef SOURCE_SADF .f_render = render_net_ip6_stats, .f_xml_print = xml_print_net_ip6_stats, .f_json_print = json_print_net_ip6_stats, .f_svg_print = svg_print_net_ip6_stats, - .hdr_line = "irec6/s;fwddgm6/s;idel6/s;orq6/s;asmrq6/s;asmok6/s;" - "imcpck6/s;omcpck6/s;fragok6/s;fragcr6/s", .name = "A_NET_IP6", .g_nr = 4, #endif @@ -940,13 +990,15 @@ struct activity net_eip6_act = { .f_print = print_net_eip6_stats, .f_print_avg = print_net_eip6_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "ihdrer6/s;iadrer6/s;iukwnp6/s;i2big6/s;idisc6/s;odisc6/s;" + "inort6/s;onort6/s;asmf6/s;fragf6/s;itrpck6/s", +#endif #ifdef SOURCE_SADF .f_render = render_net_eip6_stats, .f_xml_print = xml_print_net_eip6_stats, .f_json_print = json_print_net_eip6_stats, .f_svg_print = svg_print_net_eip6_stats, - .hdr_line = "ihdrer6/s;iadrer6/s;iukwnp6/s;i2big6/s;idisc6/s;odisc6/s;" - "inort6/s;onort6/s;asmf6/s;fragf6/s;itrpck6/s", .name = "A_NET_EIP6", .g_nr = 4, #endif @@ -975,14 +1027,16 @@ struct activity net_icmp6_act = { .f_print = print_net_icmp6_stats, .f_print_avg = print_net_icmp6_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "imsg6/s;omsg6/s;iech6/s;iechr6/s;oechr6/s;igmbq6/s;igmbr6/s;ogmbr6/s;" + "igmbrd6/s;ogmbrd6/s;irtsol6/s;ortsol6/s;irtad6/s;inbsol6/s;onbsol6/s;" + "inbad6/s;onbad6/s", +#endif #ifdef SOURCE_SADF .f_render = render_net_icmp6_stats, .f_xml_print = xml_print_net_icmp6_stats, .f_json_print = json_print_net_icmp6_stats, .f_svg_print = svg_print_net_icmp6_stats, - .hdr_line = "imsg6/s;omsg6/s;iech6/s;iechr6/s;oechr6/s;igmbq6/s;igmbr6/s;ogmbr6/s;" - "igmbrd6/s;ogmbrd6/s;irtsol6/s;ortsol6/s;irtad6/s;inbsol6/s;onbsol6/s;" - "inbad6/s;onbad6/s", .name = "A_NET_ICMP6", .g_nr = 5, #endif @@ -1011,13 +1065,15 @@ struct activity net_eicmp6_act = { .f_print = print_net_eicmp6_stats, .f_print_avg = print_net_eicmp6_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "ierr6/s;idtunr6/s;odtunr6/s;itmex6/s;otmex6/s;" + "iprmpb6/s;oprmpb6/s;iredir6/s;oredir6/s;ipck2b6/s;opck2b6/s", +#endif #ifdef SOURCE_SADF .f_render = render_net_eicmp6_stats, .f_xml_print = xml_print_net_eicmp6_stats, .f_json_print = json_print_net_eicmp6_stats, .f_svg_print = svg_print_net_eicmp6_stats, - .hdr_line = "ierr6/s;idtunr6/s;odtunr6/s;itmex6/s;otmex6/s;" - "iprmpb6/s;oprmpb6/s;iredir6/s;oredir6/s;ipck2b6/s;opck2b6/s", .name = "A_NET_EICMP6", .g_nr = 6, #endif @@ -1046,12 +1102,14 @@ struct activity net_udp6_act = { .f_print = print_net_udp6_stats, .f_print_avg = print_net_udp6_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "idgm6/s;odgm6/s;noport6/s;idgmer6/s", +#endif #ifdef SOURCE_SADF .f_render = render_net_udp6_stats, .f_xml_print = xml_print_net_udp6_stats, .f_json_print = json_print_net_udp6_stats, .f_svg_print = svg_print_net_udp6_stats, - .hdr_line = "idgm6/s;odgm6/s;noport6/s;idgmer6/s", .name = "A_NET_UDP6", .g_nr = 2, #endif @@ -1080,12 +1138,14 @@ struct activity pwr_cpufreq_act = { .f_print = print_pwr_cpufreq_stats, .f_print_avg = print_avg_pwr_cpufreq_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "CPU;MHz", +#endif #ifdef SOURCE_SADF .f_render = render_pwr_cpufreq_stats, .f_xml_print = xml_print_pwr_cpufreq_stats, .f_json_print = json_print_pwr_cpufreq_stats, .f_svg_print = svg_print_pwr_cpufreq_stats, - .hdr_line = "CPU;MHz", .name = "A_PWR_CPUFREQ", .g_nr = 1, #endif @@ -1114,12 +1174,14 @@ struct activity pwr_fan_act = { .f_print = print_pwr_fan_stats, .f_print_avg = print_avg_pwr_fan_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "FAN;DEVICE;rpm;drpm", +#endif #ifdef SOURCE_SADF .f_render = render_pwr_fan_stats, .f_xml_print = xml_print_pwr_fan_stats, .f_json_print = json_print_pwr_fan_stats, .f_svg_print = svg_print_pwr_fan_stats, - .hdr_line = "FAN;DEVICE;rpm;drpm", .name = "A_PWR_FAN", .g_nr = 1, #endif @@ -1148,12 +1210,14 @@ struct activity pwr_temp_act = { .f_print = print_pwr_temp_stats, .f_print_avg = print_avg_pwr_temp_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "TEMP;DEVICE;degC;%temp", +#endif #ifdef SOURCE_SADF .f_render = render_pwr_temp_stats, .f_xml_print = xml_print_pwr_temp_stats, .f_json_print = json_print_pwr_temp_stats, .f_svg_print = svg_print_pwr_temp_stats, - .hdr_line = "TEMP;DEVICE;degC;%temp", .name = "A_PWR_TEMP", .g_nr = 2, #endif @@ -1182,12 +1246,14 @@ struct activity pwr_in_act = { .f_print = print_pwr_in_stats, .f_print_avg = print_avg_pwr_in_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "IN;DEVICE;inV;%in", +#endif #ifdef SOURCE_SADF .f_render = render_pwr_in_stats, .f_xml_print = xml_print_pwr_in_stats, .f_json_print = json_print_pwr_in_stats, .f_svg_print = svg_print_pwr_in_stats, - .hdr_line = "IN;DEVICE;inV;%in", .name = "A_PWR_IN", .g_nr = 2, #endif @@ -1216,12 +1282,14 @@ struct activity huge_act = { .f_print = print_huge_stats, .f_print_avg = print_avg_huge_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "kbhugfree;kbhugused;%hugused", +#endif #ifdef SOURCE_SADF .f_render = render_huge_stats, .f_xml_print = xml_print_huge_stats, .f_json_print = json_print_huge_stats, .f_svg_print = svg_print_huge_stats, - .hdr_line = "kbhugfree;kbhugused;%hugused", .name = "A_HUGE", .g_nr = 2, #endif @@ -1250,11 +1318,13 @@ struct activity pwr_wghfreq_act = { .f_print = print_pwr_wghfreq_stats, .f_print_avg = print_pwr_wghfreq_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "CPU;wghMHz", +#endif #ifdef SOURCE_SADF .f_render = render_pwr_wghfreq_stats, .f_xml_print = xml_print_pwr_wghfreq_stats, .f_json_print = json_print_pwr_wghfreq_stats, - .hdr_line = "CPU;wghMHz", .name = "A_PWR_WGHFREQ", .g_nr = 0, #endif @@ -1283,11 +1353,13 @@ struct activity pwr_usb_act = { .f_print = print_pwr_usb_stats, .f_print_avg = print_avg_pwr_usb_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "manufact;product;BUS;idvendor;idprod;maxpower", +#endif #ifdef SOURCE_SADF .f_render = render_pwr_usb_stats, .f_xml_print = xml_print_pwr_usb_stats, .f_json_print = json_print_pwr_usb_stats, - .hdr_line = "manufact;product;BUS;idvendor;idprod;maxpower", .name = "A_PWR_USB", .g_nr = 0, #endif @@ -1316,12 +1388,15 @@ struct activity filesystem_act = { .f_print = print_filesystem_stats, .f_print_avg = print_avg_filesystem_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "FILESYSTEM;MBfsfree;MBfsused;%fsused;%ufsused;Ifree;Iused;%Iused|" + "MOUNTPOINT;MBfsfree;MBfsused;%fsused;%ufsused;Ifree;Iused;%Iused", +#endif #ifdef SOURCE_SADF .f_render = render_filesystem_stats, .f_xml_print = xml_print_filesystem_stats, .f_json_print = json_print_filesystem_stats, .f_svg_print = svg_print_filesystem_stats, - .hdr_line = "FILESYSTEM;MBfsfree;MBfsused;%fsused;%ufsused;Ifree;Iused;%Iused", .name = "A_FILESYSTEM", .g_nr = 4, #endif @@ -1350,12 +1425,14 @@ struct activity fchost_act = { .f_print = print_fchost_stats, .f_print_avg = print_fchost_stats, #endif +#if defined(SOURCE_SAR) || defined(SOURCE_SADF) + .hdr_line = "FCHOST;fch_rxf/s;fch_txf/s;fch_rxw/s;fch_txw/s", +#endif #ifdef SOURCE_SADF .f_render = render_fchost_stats, .f_xml_print = xml_print_fchost_stats, .f_json_print = json_print_fchost_stats, .f_svg_print = svg_print_fchost_stats, - .hdr_line = "FCHOST;fch_rxf/s;fch_txf/s;fch_rxw/s;fch_txw/s", .name = "A_FCHOST", .g_nr = 2, #endif diff --git a/pr_stats.c b/pr_stats.c index b20953b..ed2761c 100644 --- a/pr_stats.c +++ b/pr_stats.c @@ -42,6 +42,70 @@ extern int dis; extern char timestamp[][TIMESTAMP_LEN]; extern unsigned long avg_count; + +/* + *************************************************************************** + * Display current activity header line. + * + * IN: + * @timestamp Timestamp for previous stat sample. + * @a Activity structure. + * @pos Index in @.hdr_line string, 0 being the first one (header + * are delimited by the '|' character). + * @iwidth First column width (generally this is the item name). A + * negative value means that the corresponding field shall be + * displayed at the end of the line, with no indication of width. + * @vwidth Column width for stats values. + *************************************************************************** + */ +void print_hdr_line(char *timestamp, struct activity *a, int pos, int iwidth, int vwidth) +{ + char hline[HEADER_LINE_LEN] = ""; + char *hl, *tk, *it = NULL; + int i = -1, j; + int p = pos; + + strncpy(hline, a->hdr_line, HEADER_LINE_LEN - 1); + hline[HEADER_LINE_LEN - 1] = '\0'; + for (hl = strtok(hline, "|"); hl && (pos > 0); hl = strtok(NULL, "|"), pos--); + if (!hl) + /* Bad @pos arg given to function */ + return; + + printf("\n%-11s", timestamp); + + if (strchr(hl, '&')) { + j = strcspn(hl, "&"); + if ((a->opt_flags & 0xff00) & (1 << (8 + p))) { + /* Display whole header line */ + *(hl + j) = ';'; + } + else { + /* Display only the first part of the header line */ + *(hl + j) = '\0'; + } + } + /* Display each field */ + for (tk = strtok(hl, ";"); tk; tk = strtok(NULL, ";"), i--) { + if (iwidth > 0) { + printf(" %*s", iwidth, tk); + iwidth = 0; + continue; + } + if ((iwidth < 0) && (iwidth == i)) { + it = tk; + iwidth = 0; + } + else { + printf(" %*s", vwidth, tk); + } + } + if (it) { + printf(" %s", it); + } + printf("\n"); +} + /* *************************************************************************** * Display CPU statistics. @@ -61,17 +125,7 @@ __print_funct_t print_cpu_stats(struct activity *a, int prev, int curr, struct stats_cpu *scc, *scp; if (dis) { - if (DISPLAY_CPU_DEF(a->opt_flags)) { - printf("\n%-11s CPU %%user %%nice %%system" - " %%iowait %%steal %%idle\n", - timestamp[!curr]); - } - else if (DISPLAY_CPU_ALL(a->opt_flags)) { - printf("\n%-11s CPU %%usr %%nice %%sys" - " %%iowait %%steal %%irq %%soft" - " %%guest %%gnice %%idle\n", - timestamp[!curr]); - } + print_hdr_line(timestamp[!curr], a, FIRST + DISPLAY_CPU_ALL(a->opt_flags), 7, 9); } for (i = 0; (i < a->nr) && (i < a->bitmap->b_size + 1); i++) { @@ -226,7 +280,7 @@ __print_funct_t print_pcsw_stats(struct activity *a, int prev, int curr, *spp = (struct stats_pcsw *) a->buf[prev]; if (dis) { - printf("\n%-11s proc/s cswch/s\n", timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -254,7 +308,7 @@ __print_funct_t print_irq_stats(struct activity *a, int prev, int curr, struct stats_irq *sic, *sip; if (dis) { - printf("\n%-11s INTR intr/s\n", timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } for (i = 0; (i < a->nr) && (i < a->bitmap->b_size + 1); i++) { @@ -308,7 +362,7 @@ __print_funct_t print_swap_stats(struct activity *a, int prev, int curr, *ssp = (struct stats_swap *) a->buf[prev]; if (dis) { - printf("\n%-11s pswpin/s pswpout/s\n", timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -337,9 +391,7 @@ __print_funct_t print_paging_stats(struct activity *a, int prev, int curr, *spp = (struct stats_paging *) a->buf[prev]; if (dis) { - printf("\n%-11s pgpgin/s pgpgout/s fault/s majflt/s pgfree/s" - " pgscank/s pgscand/s pgsteal/s %%vmeff\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -381,8 +433,7 @@ __print_funct_t print_io_stats(struct activity *a, int prev, int curr, *sip = (struct stats_io *) a->buf[prev]; if (dis) { - printf("\n%-11s tps rtps wtps bread/s bwrtn/s\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -445,8 +496,7 @@ void stub_print_memory_stats(struct activity *a, int prev, int curr, if (DISPLAY_MEMORY(a->opt_flags)) { if (dis) { - printf("\n%-11s frmpg/s bufpg/s campg/s\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -459,12 +509,7 @@ void stub_print_memory_stats(struct activity *a, int prev, int curr, if (DISPLAY_MEM_AMT(a->opt_flags)) { if (dis) { - printf("\n%-11s kbmemfree kbmemused %%memused kbbuffers kbcached" - " kbcommit %%commit kbactive kbinact kbdirty", timestamp[!curr]); - if (DISPLAY_MEM_ALL(a->opt_flags)) { - printf(" kbanonpg kbslab kbkstack kbpgtbl kbvmused"); - } - printf("\n"); + print_hdr_line(timestamp[!curr], a, SECOND, 0, 9); } if (!dispavg) { @@ -564,8 +609,7 @@ void stub_print_memory_stats(struct activity *a, int prev, int curr, if (DISPLAY_SWAP(a->opt_flags)) { if (dis) { - printf("\n%-11s kbswpfree kbswpused %%swpused kbswpcad %%swpcad\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, THIRD, 0, 9); } if (!dispavg) { @@ -681,8 +725,7 @@ void stub_print_ktables_stats(struct activity *a, int curr, int dispavg) if (dis) { - printf("\n%-11s dentunusd file-nr inode-nr pty-nr\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } if (!dispavg) { @@ -777,8 +820,7 @@ void stub_print_queue_stats(struct activity *a, int curr, int dispavg) avg_procs_blocked = 0; if (dis) { - printf("\n%-11s runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } if (!dispavg) { @@ -876,8 +918,7 @@ __print_funct_t print_serial_stats(struct activity *a, int prev, int curr, struct stats_serial *ssc, *ssp; if (dis) { - printf("\n%-11s TTY rcvin/s xmtin/s framerr/s prtyerr/s" - " brk/s ovrun/s\n", timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } for (i = 0; i < a->nr; i++) { @@ -928,9 +969,7 @@ __print_funct_t print_disk_stats(struct activity *a, int prev, int curr, char *dev_name, *persist_dev_name; if (dis) { - printf("\n%-11s DEV tps rd_sec/s wr_sec/s avgrq-sz" - " avgqu-sz await svctm %%util\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } for (i = 0; i < a->nr; i++) { @@ -1004,8 +1043,7 @@ __print_funct_t print_net_dev_stats(struct activity *a, int prev, int curr, double rxkb, txkb, ifutil; if (dis) { - printf("\n%-11s IFACE rxpck/s txpck/s rxkB/s txkB/s" - " rxcmp/s txcmp/s rxmcst/s %%ifutil\n", timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } for (i = 0; i < a->nr; i++) { @@ -1056,9 +1094,7 @@ __print_funct_t print_net_edev_stats(struct activity *a, int prev, int curr, struct stats_net_edev *snedc, *snedp; if (dis) { - printf("\n%-11s IFACE rxerr/s txerr/s coll/s rxdrop/s" - " txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } for (i = 0; i < a->nr; i++) { @@ -1107,8 +1143,7 @@ __print_funct_t print_net_nfs_stats(struct activity *a, int prev, int curr, *snnp = (struct stats_net_nfs *) a->buf[prev]; if (dis) { - printf("\n%-11s call/s retrans/s read/s write/s access/s" - " getatt/s\n", timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -1141,9 +1176,7 @@ __print_funct_t print_net_nfsd_stats(struct activity *a, int prev, int curr, *snndp = (struct stats_net_nfsd *) a->buf[prev]; if (dis) { - printf("\n%-11s scall/s badcall/s packet/s udp/s tcp/s " - "hit/s miss/s sread/s swrite/s saccess/s sgetatt/s\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -1186,8 +1219,7 @@ void stub_print_net_sock_stats(struct activity *a, int curr, int dispavg) avg_tcp_tw = 0; if (dis) { - printf("\n%-11s totsck tcpsck udpsck rawsck ip-frag tcp-tw\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } if (!dispavg) { @@ -1281,8 +1313,7 @@ __print_funct_t print_net_ip_stats(struct activity *a, int prev, int curr, *snip = (struct stats_net_ip *) a->buf[prev]; if (dis) { - printf("\n%-11s irec/s fwddgm/s idel/s orq/s asmrq/s" - " asmok/s fragok/s fragcrt/s\n", timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -1317,8 +1348,7 @@ __print_funct_t print_net_eip_stats(struct activity *a, int prev, int curr, *sneip = (struct stats_net_eip *) a->buf[prev]; if (dis) { - printf("\n%-11s ihdrerr/s iadrerr/s iukwnpr/s idisc/s odisc/s" - " onort/s asmf/s fragf/s\n", timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -1353,9 +1383,7 @@ __print_funct_t print_net_icmp_stats(struct activity *a, int prev, int curr, *snip = (struct stats_net_icmp *) a->buf[prev]; if (dis) { - printf("\n%-11s imsg/s omsg/s iech/s iechr/s oech/s" - " oechr/s itm/s itmr/s otm/s otmr/s" - " iadrmk/s iadrmkr/s oadrmk/s oadrmkr/s\n", timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -1396,9 +1424,7 @@ __print_funct_t print_net_eicmp_stats(struct activity *a, int prev, int curr, *sneip = (struct stats_net_eicmp *) a->buf[prev]; if (dis) { - printf("\n%-11s ierr/s oerr/s idstunr/s odstunr/s itmex/s" - " otmex/s iparmpb/s oparmpb/s isrcq/s osrcq/s" - " iredir/s oredir/s\n", timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -1437,8 +1463,7 @@ __print_funct_t print_net_tcp_stats(struct activity *a, int prev, int curr, *sntp = (struct stats_net_tcp *) a->buf[prev]; if (dis) { - printf("\n%-11s active/s passive/s iseg/s oseg/s\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -1469,8 +1494,7 @@ __print_funct_t print_net_etcp_stats(struct activity *a, int prev, int curr, *snetp = (struct stats_net_etcp *) a->buf[prev]; if (dis) { - printf("\n%-11s atmptf/s estres/s retrans/s isegerr/s orsts/s\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -1502,8 +1526,7 @@ __print_funct_t print_net_udp_stats(struct activity *a, int prev, int curr, *snup = (struct stats_net_udp *) a->buf[prev]; if (dis) { - printf("\n%-11s idgm/s odgm/s noport/s idgmerr/s\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -1537,8 +1560,7 @@ void stub_print_net_sock6_stats(struct activity *a, int curr, int dispavg) avg_frag6_inuse = 0; if (dis) { - printf("\n%-11s tcp6sck udp6sck raw6sck ip6-frag\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } if (!dispavg) { @@ -1625,9 +1647,7 @@ __print_funct_t print_net_ip6_stats(struct activity *a, int prev, int curr, *snip = (struct stats_net_ip6 *) a->buf[prev]; if (dis) { - printf("\n%-11s irec6/s fwddgm6/s idel6/s orq6/s asmrq6/s" - " asmok6/s imcpck6/s omcpck6/s fragok6/s fragcr6/s\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -1664,9 +1684,7 @@ __print_funct_t print_net_eip6_stats(struct activity *a, int prev, int curr, *sneip = (struct stats_net_eip6 *) a->buf[prev]; if (dis) { - printf("\n%-11s ihdrer6/s iadrer6/s iukwnp6/s i2big6/s idisc6/s odisc6/s" - " inort6/s onort6/s asmf6/s fragf6/s itrpck6/s\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -1704,10 +1722,7 @@ __print_funct_t print_net_icmp6_stats(struct activity *a, int prev, int curr, *snip = (struct stats_net_icmp6 *) a->buf[prev]; if (dis) { - printf("\n%-11s imsg6/s omsg6/s iech6/s iechr6/s oechr6/s" - " igmbq6/s igmbr6/s ogmbr6/s igmbrd6/s ogmbrd6/s irtsol6/s ortsol6/s" - " irtad6/s inbsol6/s onbsol6/s inbad6/s onbad6/s\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -1751,9 +1766,7 @@ __print_funct_t print_net_eicmp6_stats(struct activity *a, int prev, int curr, *sneip = (struct stats_net_eicmp6 *) a->buf[prev]; if (dis) { - printf("\n%-11s ierr6/s idtunr6/s odtunr6/s itmex6/s otmex6/s" - " iprmpb6/s oprmpb6/s iredir6/s oredir6/s ipck2b6/s opck2b6/s\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -1791,8 +1804,7 @@ __print_funct_t print_net_udp6_stats(struct activity *a, int prev, int curr, *snup = (struct stats_net_udp6 *) a->buf[prev]; if (dis) { - printf("\n%-11s idgm6/s odgm6/s noport6/s idgmer6/s\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } printf("%-11s", timestamp[curr]); @@ -1833,8 +1845,7 @@ void stub_print_pwr_cpufreq_stats(struct activity *a, int curr, int dispavg) } if (dis) { - printf("\n%-11s CPU MHz\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 7, 9); } for (i = 0; (i < a->nr) && (i < a->bitmap->b_size + 1); i++) { @@ -1967,14 +1978,14 @@ void stub_print_pwr_fan_stats(struct activity *a, int curr, int dispavg) } if (dis) { - printf("\n%-11s FAN rpm drpm DEVICE\n", timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, -2, 9); } for (i = 0; i < a->nr; i++) { spc = (struct stats_pwr_fan *) ((char *) a->buf[curr] + i * a->msize); printf("%-11s", timestamp[curr]); - cprintf_in(IS_INT, " %3d", "", i + 1); + cprintf_in(IS_INT, " %5d", "", i + 1); if (dispavg) { /* Display average values */ @@ -2082,14 +2093,14 @@ void stub_print_pwr_temp_stats(struct activity *a, int curr, int dispavg) } if (dis) { - printf("\n%-11s TEMP degC %%temp DEVICE\n", timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, -2, 9); } for (i = 0; i < a->nr; i++) { spc = (struct stats_pwr_temp *) ((char *) a->buf[curr] + i * a->msize); printf("%-11s", timestamp[curr]); - cprintf_in(IS_INT, " %3d", "", i + 1); + cprintf_in(IS_INT, " %5d", "", i + 1); if (dispavg) { /* Display average values */ @@ -2207,14 +2218,14 @@ void stub_print_pwr_in_stats(struct activity *a, int curr, int dispavg) } if (dis) { - printf("\n%-11s IN inV %%in DEVICE\n", timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, -2, 9); } for (i = 0; i < a->nr; i++) { spc = (struct stats_pwr_in *) ((char *) a->buf[curr] + i * a->msize); printf("%-11s", timestamp[curr]); - cprintf_in(IS_INT, " %3d", "", i); + cprintf_in(IS_INT, " %5d", "", i); if (dispavg) { /* Display average values */ @@ -2310,8 +2321,7 @@ void stub_print_huge_stats(struct activity *a, int curr, int dispavg) avg_tlhkb = 0; if (dis) { - printf("\n%-11s kbhugfree kbhugused %%hugused\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 0, 9); } if (!dispavg) { @@ -2402,8 +2412,7 @@ void print_pwr_wghfreq_stats(struct activity *a, int prev, int curr, unsigned long long tis, tisfreq; if (dis) { - printf("\n%-11s CPU wghMHz\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, 7, 9); } for (i = 0; (i < a->nr) && (i < a->bitmap->b_size + 1); i++) { @@ -2594,10 +2603,8 @@ __print_funct_t stub_print_filesystem_stats(struct activity *a, int curr, int di struct stats_filesystem *sfc, *sfm; if (dis) { - printf("\n%-11s MBfsfree MBfsused %%fsused %%ufsused" - " Ifree Iused %%Iused %s\n", - (dispavg ? _("Summary:") : timestamp[!curr]), - DISPLAY_MOUNT(a->opt_flags) ? "MOUNTPOINT" : "FILESYSTEM"); + print_hdr_line((dispavg ? _("Summary:") : timestamp[!curr]), + a, FIRST + DISPLAY_MOUNT(a->opt_flags), -1, 9); } for (i = 0; i < a->nr; i++) { @@ -2697,8 +2704,7 @@ __print_funct_t print_fchost_stats(struct activity *a, int prev, int curr, struct stats_fchost *sfcc,*sfcp; if (dis) { - printf("\n%-11s fch_rxf/s fch_txf/s fch_rxw/s fch_txw/s FCHOST\n", - timestamp[!curr]); + print_hdr_line(timestamp[!curr], a, FIRST, -1, 9); } for (i = 0; i < a->nr; i++) { diff --git a/sa.h b/sa.h index 1a500e6..2a20049 100644 --- a/sa.h +++ b/sa.h @@ -266,6 +266,10 @@ #define SOFT_SIZE 0 #define HARD_SIZE 1 +#define FIRST 0 +#define SECOND 1 +#define THIRD 2 + #define CLOSE_XML_MARKUP 0 #define OPEN_XML_MARKUP 1 -- 2.40.0