>Number:         146119
>Category:       misc
>Synopsis:       [patch] (attempt to) cleanup tools/tools/umastat
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Apr 28 17:20:00 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     pluknet
>Release:        HEAD r207204
>Organization:
>Environment:
>Description:
1) printf() modifiers on LP64
2) warning "dereferencing type-punned pointer will break strict-aliasing rules"
I had to change cast (struct bucketlist *) to (void *) to shut up this warning 
without much rewrite. *sigh
3) s/kvm_open/kvm_openfiles/;
when using kvm_open, kvm_nlist returns "No such file or directory".
that fixes this warning. I didn't find much difference umastat output.
>How-To-Repeat:

>Fix:


Patch attached with submission follows:

Index: tools/tools/umastat/umastat.c
===================================================================
--- tools/tools/umastat/umastat.c       (revision 207204)
+++ tools/tools/umastat/umastat.c       (working copy)
@@ -37,6 +37,7 @@
 
 #include <err.h>
 #include <kvm.h>
+#include <limits.h>
 #include <memstat.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -196,7 +197,7 @@
 LIST_HEAD(bucketlist, uma_bucket);
 
 static void
-uma_print_bucket(struct uma_bucket *ubp, const char *spaces)
+uma_print_bucket(struct uma_bucket *ubp, const char *spaces __unused)
 {
 
        printf("{ ub_cnt = %d, ub_entries = %d }", ubp->ub_cnt,
@@ -230,7 +231,7 @@
        }
 
        printf("\n");
-       printf("%s};  // total cnt %llu, total entries %llu\n", spaces,
+       printf("%s};  // total cnt %ju, total entries %ju\n", spaces,
            total_cnt, total_entries);
 }
 
@@ -242,8 +243,8 @@
        int ret;
 
        printf("%s%s[%d] = {\n", spaces, name, cpu);
-       printf("%s  uc_frees = %llu;\n", spaces, cache->uc_frees);
-       printf("%s  uc_allocs = %llu;\n", spaces, cache->uc_allocs);
+       printf("%s  uc_frees = %ju;\n", spaces, cache->uc_frees);
+       printf("%s  uc_allocs = %ju;\n", spaces, cache->uc_allocs);
 
        if (cache->uc_freebucket != NULL) {
                ret = kread(kvm, cache->uc_freebucket, &ub, sizeof(ub), 0);
@@ -286,6 +287,7 @@
        size_t uzp_userspace_len;
        char *memf, *nlistf;
        int ch;
+       char errbuf[_POSIX2_LINE_MAX];
 
        memf = nlistf = NULL;
        while ((ch = getopt(argc, argv, "M:N:")) != -1) {
@@ -308,9 +310,9 @@
        if (nlistf != NULL && memf == NULL)
                usage();
 
-       kvm = kvm_open(nlistf, memf, NULL, 0, "umastat");
+       kvm = kvm_open(nlistf, memf, NULL, 0, errbuf);
        if (kvm == NULL)
-               err(-1, "kvm_open");
+               errx(1, "kvm_openfiles: %s", errbuf);
 
        if (kvm_nlist(kvm, namelist) != 0)
                err(-1, "kvm_nlist");
@@ -412,20 +414,20 @@
                        }
                        printf("  Zone {\n");
                        printf("    uz_name = \"%s\";\n", name);
-                       printf("    uz_allocs = %llu;\n",
+                       printf("    uz_allocs = %ju;\n",
                            uzp_userspace->uz_allocs);
-                       printf("    uz_frees = %llu;\n",
+                       printf("    uz_frees = %ju;\n",
                            uzp_userspace->uz_frees);
-                       printf("    uz_fails = %llu;\n",
+                       printf("    uz_fails = %ju;\n",
                            uzp_userspace->uz_fails);
                        printf("    uz_fills = %u;\n",
                            uzp_userspace->uz_fills);
                        printf("    uz_count = %u;\n",
                            uzp_userspace->uz_count);
-                       uma_print_bucketlist(kvm, (struct bucketlist *)
+                       uma_print_bucketlist(kvm, (void *)
                            &uzp_userspace->uz_full_bucket, "uz_full_bucket",
                            "    ");
-                       uma_print_bucketlist(kvm, (struct bucketlist *)
+                       uma_print_bucketlist(kvm, (void *)
                            &uzp_userspace->uz_free_bucket, "uz_free_bucket",
                            "    ");
 


>Release-Note:
>Audit-Trail:
>Unformatted:
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "[email protected]"

Reply via email to