Author: rlibby
Date: Wed Dec 11 06:50:55 2019
New Revision: 355605
URL: https://svnweb.freebsd.org/changeset/base/355605

Log:
  uma: pretty print zone flags sysctl
  
  Requested by: jeff
  Reviewed by:  jeff, markj
  Sponsored by: Dell EMC Isilon
  Differential Revision:        https://reviews.freebsd.org/D22748

Modified:
  head/sys/vm/uma_core.c
  head/sys/vm/uma_int.h

Modified: head/sys/vm/uma_core.c
==============================================================================
--- head/sys/vm/uma_core.c      Wed Dec 11 06:34:48 2019        (r355604)
+++ head/sys/vm/uma_core.c      Wed Dec 11 06:50:55 2019        (r355605)
@@ -289,6 +289,7 @@ static int sysctl_vm_zone_count(SYSCTL_HANDLER_ARGS);
 static int sysctl_vm_zone_stats(SYSCTL_HANDLER_ARGS);
 static int sysctl_handle_uma_zone_allocs(SYSCTL_HANDLER_ARGS);
 static int sysctl_handle_uma_zone_frees(SYSCTL_HANDLER_ARGS);
+static int sysctl_handle_uma_zone_flags(SYSCTL_HANDLER_ARGS);
 
 #ifdef INVARIANTS
 static bool uma_dbg_kskip(uma_keg_t keg, void *mem);
@@ -1896,8 +1897,9 @@ zone_alloc_sysctl(uma_zone_t zone, void *unused)
        oid = zone->uz_oid;
        SYSCTL_ADD_U32(NULL, SYSCTL_CHILDREN(oid), OID_AUTO,
            "size", CTLFLAG_RD, &zone->uz_size, 0, "Allocation size");
-       SYSCTL_ADD_U32(NULL, SYSCTL_CHILDREN(oid), OID_AUTO,
-           "flags", CTLFLAG_RD, &zone->uz_flags, 0,
+       SYSCTL_ADD_PROC(NULL, SYSCTL_CHILDREN(oid), OID_AUTO,
+           "flags", CTLFLAG_RD | CTLTYPE_STRING | CTLFLAG_MPSAFE,
+           zone, 0, sysctl_handle_uma_zone_flags, "A",
            "Allocator configuration flags");
        SYSCTL_ADD_U16(NULL, SYSCTL_CHILDREN(oid), OID_AUTO,
            "bucket_size", CTLFLAG_RD, &zone->uz_bucket_size, 0,
@@ -4406,6 +4408,24 @@ sysctl_handle_uma_zone_frees(SYSCTL_HANDLER_ARGS)
 
        cur = uma_zone_get_frees(zone);
        return (sysctl_handle_64(oidp, &cur, 0, req));
+}
+
+static int
+sysctl_handle_uma_zone_flags(SYSCTL_HANDLER_ARGS)
+{
+       struct sbuf sbuf;
+       uma_zone_t zone = arg1;
+       int error;
+
+       sbuf_new_for_sysctl(&sbuf, NULL, 0, req);
+       if (zone->uz_flags != 0)
+               sbuf_printf(&sbuf, "0x%b", zone->uz_flags, PRINT_UMA_ZFLAGS);
+       else
+               sbuf_printf(&sbuf, "0");
+       error = sbuf_finish(&sbuf);
+       sbuf_delete(&sbuf);
+
+       return (error);
 }
 
 #ifdef INVARIANTS

Modified: head/sys/vm/uma_int.h
==============================================================================
--- head/sys/vm/uma_int.h       Wed Dec 11 06:34:48 2019        (r355604)
+++ head/sys/vm/uma_int.h       Wed Dec 11 06:50:55 2019        (r355605)
@@ -420,6 +420,32 @@ struct uma_zone {
 #define        UMA_ZFLAG_INHERIT                                               
\
     (UMA_ZFLAG_INTERNAL | UMA_ZFLAG_CACHEONLY | UMA_ZFLAG_BUCKET)
 
+#define        PRINT_UMA_ZFLAGS        "\20"   \
+    "\40CACHEONLY"                     \
+    "\37TRASH"                         \
+    "\36INTERNAL"                      \
+    "\35BUCKET"                                \
+    "\34RECLAIMING"                    \
+    "\33CACHE"                         \
+    "\22MINBUCKET"                     \
+    "\21NUMA"                          \
+    "\20PCPU"                          \
+    "\17NODUMP"                                \
+    "\16VTOSLAB"                       \
+    "\15CACHESPREAD"                   \
+    "\14MAXBUCKET"                     \
+    "\13NOBUCKET"                      \
+    "\12SECONDARY"                     \
+    "\11HASH"                          \
+    "\10VM"                            \
+    "\7MTXCLASS"                       \
+    "\6NOFREE"                         \
+    "\5MALLOC"                         \
+    "\4OFFPAGE"                                \
+    "\3STATIC"                         \
+    "\2ZINIT"                          \
+    "\1PAGEABLE"
+
 #undef UMA_ALIGN
 
 #ifdef _KERNEL
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to