svn commit: r355605 - head/sys/vm
Ryan Libby
rlibby at FreeBSD.org
Wed Dec 11 06:50:56 UTC 2019
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
More information about the svn-src-head
mailing list