diff options
Diffstat (limited to 'usr/src/cmd/fs.d/nfs/nfsstat/nfsstat.c')
-rw-r--r-- | usr/src/cmd/fs.d/nfs/nfsstat/nfsstat.c | 59 |
1 files changed, 40 insertions, 19 deletions
diff --git a/usr/src/cmd/fs.d/nfs/nfsstat/nfsstat.c b/usr/src/cmd/fs.d/nfs/nfsstat/nfsstat.c index 7015830673..195a2bb5d5 100644 --- a/usr/src/cmd/fs.d/nfs/nfsstat/nfsstat.c +++ b/usr/src/cmd/fs.d/nfs/nfsstat/nfsstat.c @@ -23,12 +23,10 @@ /* PROTOLIB1 */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* * nfsstat: Network File System statistics * @@ -65,7 +63,9 @@ #include <sys/time.h> #include <strings.h> #include <ctype.h> +#include <locale.h> +#include "statcommon.h" static kstat_ctl_t *kc = NULL; /* libkstat cookie */ static kstat_t *rpc_clts_client_kstat, *rpc_clts_server_kstat; @@ -97,14 +97,13 @@ static void sa_print(int, int); static void req_print(kstat_t *, kstat_t *, int, int, int); static void req_print_v4(kstat_t *, kstat_t *, int, int); static void stat_print(const char *, kstat_t *, kstat_t *, int, int); -static void kstat_sum(kstat_t *, kstat_t *, kstat_t *); +static void nfsstat_kstat_sum(kstat_t *, kstat_t *, kstat_t *); static void stats_timer(int); static void safe_zalloc(void **, uint_t, int); static int safe_strtoi(char const *, char *); -static void kstat_copy(kstat_t *, kstat_t *, int); -static void fail(int, char *, ...); +static void nfsstat_kstat_copy(kstat_t *, kstat_t *, int); static kid_t safe_kstat_read(kstat_ctl_t *, kstat_t *, void *); static kid_t safe_kstat_write(kstat_ctl_t *, kstat_t *, void *); @@ -149,7 +148,11 @@ static old_kstat_t old_rfsreqcnt_v3_kstat, old_rfsreqcnt_v4_kstat; static old_kstat_t old_aclproccnt_v2_kstat, old_aclproccnt_v3_kstat; static old_kstat_t old_aclreqcnt_v2_kstat, old_aclreqcnt_v3_kstat; +static uint_t timestamp_fmt = NODATE; +#if !defined(TEXT_DOMAIN) /* Should be defined by cc -D */ +#define TEXT_DOMAIN "SYS_TEST" /* Use this only if it isn't */ +#endif int main(int argc, char *argv[]) @@ -170,7 +173,10 @@ main(int argc, char *argv[]) count = 0; go_forever = 0; - while ((c = getopt(argc, argv, "cnrsmzav:")) != EOF) { + (void) setlocale(LC_ALL, ""); + (void) textdomain(TEXT_DOMAIN); + + while ((c = getopt(argc, argv, "cnrsmzav:T:")) != EOF) { switch (c) { case 'c': cflag++; @@ -200,6 +206,18 @@ main(int argc, char *argv[]) if ((vflag < 2) || (vflag > 4)) fail(0, "Invalid version number\n"); break; + case 'T': + if (optarg) { + if (*optarg == 'u') + timestamp_fmt = UDATE; + else if (*optarg == 'd') + timestamp_fmt = DDATE; + else + usage(); + } else { + usage(); + } + break; case '?': default: usage(); @@ -255,6 +273,8 @@ main(int argc, char *argv[]) if (mflag) { mi_print(); } else { + if (timestamp_fmt != NODATE) + print_timestamp(timestamp_fmt); if (sflag && (rpc_clts_server_kstat == NULL || @@ -619,7 +639,8 @@ cn_print(int zflag, int vflag) return; if (vflag == 0) { - kstat_sum(nfs_client_kstat, nfs4_client_kstat, ksum_kstat); + nfsstat_kstat_sum(nfs_client_kstat, nfs4_client_kstat, + ksum_kstat); stat_print("\nClient nfs:", ksum_kstat, &old_ksum_kstat.kst, field_width, zflag); } @@ -810,9 +831,9 @@ req_print(kstat_t *req, kstat_t *req_old, int ver, int field_width, knp[i].value.ui64 = 0; } if (knp_old != NULL) - kstat_copy(req, req_old, 1); + nfsstat_kstat_copy(req, req_old, 1); else - kstat_copy(req, req_old, 0); + nfsstat_kstat_copy(req, req_old, 0); } /* @@ -918,9 +939,9 @@ req_print_v4(kstat_t *req, kstat_t *req_old, int field_width, int zflag) kptr[i].value.ui64 = 0; } if (kptr_old != NULL) - kstat_copy(req, req_old, 1); + nfsstat_kstat_copy(req, req_old, 1); else - kstat_copy(req, req_old, 0); + nfsstat_kstat_copy(req, req_old, 0); } static void @@ -969,13 +990,13 @@ stat_print(const char *title_string, kstat_t *req, kstat_t *req_old, } if (knp_old != NULL) - kstat_copy(req, req_old, 1); + nfsstat_kstat_copy(req, req_old, 1); else - kstat_copy(req, req_old, 0); + nfsstat_kstat_copy(req, req_old, 0); } static void -kstat_sum(kstat_t *kstat1, kstat_t *kstat2, kstat_t *sum) +nfsstat_kstat_sum(kstat_t *kstat1, kstat_t *kstat2, kstat_t *sum) { int i; kstat_named_t *knp1, *knp2, *knpsum; @@ -985,7 +1006,7 @@ kstat_sum(kstat_t *kstat1, kstat_t *kstat2, kstat_t *sum) knp1 = KSTAT_NAMED_PTR(kstat1); knp2 = KSTAT_NAMED_PTR(kstat2); if (sum->ks_data == NULL) - kstat_copy(kstat1, sum, 0); + nfsstat_kstat_copy(kstat1, sum, 0); knpsum = KSTAT_NAMED_PTR(sum); for (i = 0; i < (kstat1->ks_ndata); i++) @@ -1297,12 +1318,12 @@ void usage(void) { fprintf(stderr, "Usage: nfsstat [-cnrsza [-v version] " - "[interval [count]]\n"); + "[-T d|u] [interval [count]]\n"); fprintf(stderr, "Usage: nfsstat -m [pathname..]\n"); exit(1); } -static void +void fail(int do_perror, char *message, ...) { va_list args; @@ -1385,7 +1406,7 @@ handle_sig(int x) } static void -kstat_copy(kstat_t *src, kstat_t *dst, int fr) +nfsstat_kstat_copy(kstat_t *src, kstat_t *dst, int fr) { if (fr) |