Changeset View
Changeset View
Standalone View
Standalone View
sys/vm/vm_object.c
Show First 20 Lines • Show All 147 Lines • ▼ Show 20 Lines | |||||
struct object_q vm_object_list; | struct object_q vm_object_list; | ||||
struct mtx vm_object_list_mtx; /* lock for object list and count */ | struct mtx vm_object_list_mtx; /* lock for object list and count */ | ||||
struct vm_object kernel_object_store; | struct vm_object kernel_object_store; | ||||
static SYSCTL_NODE(_vm_stats, OID_AUTO, object, CTLFLAG_RD | CTLFLAG_MPSAFE, 0, | static SYSCTL_NODE(_vm_stats, OID_AUTO, object, CTLFLAG_RD | CTLFLAG_MPSAFE, 0, | ||||
"VM object stats"); | "VM object stats"); | ||||
static counter_u64_t object_collapses = EARLY_COUNTER; | static COUNTER_U64_DEFINE_EARLY(object_collapses); | ||||
SYSCTL_COUNTER_U64(_vm_stats_object, OID_AUTO, collapses, CTLFLAG_RD, | SYSCTL_COUNTER_U64(_vm_stats_object, OID_AUTO, collapses, CTLFLAG_RD, | ||||
&object_collapses, | &object_collapses, | ||||
"VM object collapses"); | "VM object collapses"); | ||||
static counter_u64_t object_bypasses = EARLY_COUNTER; | static COUNTER_U64_DEFINE_EARLY(object_bypasses); | ||||
SYSCTL_COUNTER_U64(_vm_stats_object, OID_AUTO, bypasses, CTLFLAG_RD, | SYSCTL_COUNTER_U64(_vm_stats_object, OID_AUTO, bypasses, CTLFLAG_RD, | ||||
&object_bypasses, | &object_bypasses, | ||||
"VM object bypasses"); | "VM object bypasses"); | ||||
static counter_u64_t object_collapse_waits = EARLY_COUNTER; | static COUNTER_U64_DEFINE_EARLY(object_collapse_waits); | ||||
SYSCTL_COUNTER_U64(_vm_stats_object, OID_AUTO, collapse_waits, CTLFLAG_RD, | SYSCTL_COUNTER_U64(_vm_stats_object, OID_AUTO, collapse_waits, CTLFLAG_RD, | ||||
kib: This sequence of declaration/EARLY_COUNTER initialization and SYSINIT repeats very often in… | |||||
Done Inline ActionsThat makes sense. Maybe COUNTER_U64_DEFINE_EARLY? markj: That makes sense. Maybe COUNTER_U64_DEFINE_EARLY? | |||||
Not Done Inline ActionsSure. kib: Sure. | |||||
&object_collapse_waits, | &object_collapse_waits, | ||||
"Number of sleeps for collapse"); | "Number of sleeps for collapse"); | ||||
static void | |||||
counter_startup(void) | |||||
{ | |||||
object_collapses = counter_u64_alloc(M_WAITOK); | |||||
object_bypasses = counter_u64_alloc(M_WAITOK); | |||||
object_collapse_waits = counter_u64_alloc(M_WAITOK); | |||||
} | |||||
SYSINIT(object_counters, SI_SUB_CPU, SI_ORDER_ANY, counter_startup, NULL); | |||||
static uma_zone_t obj_zone; | static uma_zone_t obj_zone; | ||||
static int vm_object_zinit(void *mem, int size, int flags); | static int vm_object_zinit(void *mem, int size, int flags); | ||||
#ifdef INVARIANTS | #ifdef INVARIANTS | ||||
static void vm_object_zdtor(void *mem, int size, void *arg); | static void vm_object_zdtor(void *mem, int size, void *arg); | ||||
▲ Show 20 Lines • Show All 2,662 Lines • Show Last 20 Lines |
This sequence of declaration/EARLY_COUNTER initialization and SYSINIT repeats very often in your patch. Would it make sense to add e.g. COUNTER_U64_SYSINIT_EARLY that would do everything?