From 903093ecec3057a5ddb9b8a367f2b0665d16b461 Mon Sep 17 00:00:00 2001 From: Sergey Kandaurov Date: Tue, 12 Nov 2013 20:13:10 +0000 Subject: [PATCH] Add VM_LAST, a special last element in enum VM_GUEST and use it in CTASSERT to ensure that vm_guest range is covered by vm_guest_sysctl_names. Suggested by: mjg --- sys/kern/subr_param.c | 1 + sys/sys/systm.h | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/kern/subr_param.c b/sys/kern/subr_param.c index e891b3477b2..afd3eacc717 100644 --- a/sys/kern/subr_param.c +++ b/sys/kern/subr_param.c @@ -156,6 +156,7 @@ static const char *const vm_guest_sysctl_names[] = { "hv", NULL }; +CTASSERT(nitems(vm_guest_sysctl_names) - 1 == VM_LAST); #ifndef XEN static const char *const vm_bnames[] = { diff --git a/sys/sys/systm.h b/sys/sys/systm.h index 289771e7c3a..0405d8b9f88 100644 --- a/sys/sys/systm.h +++ b/sys/sys/systm.h @@ -72,7 +72,8 @@ extern int vm_guest; /* Running as virtual machine guest? */ * ever implemented (e.g. vendor-specific paravirtualization features). * Keep in sync with vm_guest_sysctl_names[]. */ -enum VM_GUEST { VM_GUEST_NO = 0, VM_GUEST_VM, VM_GUEST_XEN, VM_GUEST_HV }; +enum VM_GUEST { VM_GUEST_NO = 0, VM_GUEST_VM, VM_GUEST_XEN, VM_GUEST_HV, + VM_LAST }; #if defined(WITNESS) || defined(INVARIANTS) void kassert_panic(const char *fmt, ...) __printflike(1, 2);