Index: sys/kstat.h =================================================================== RCS file: /cvs/src/sys/sys/kstat.h,v retrieving revision 1.3 diff -u -p -r1.3 kstat.h --- sys/kstat.h 22 Apr 2022 00:27:55 -0000 1.3 +++ sys/kstat.h 25 Oct 2022 21:13:46 -0000 @@ -172,6 +173,7 @@ void kstat_set_rlock(struct kstat *, s void kstat_set_wlock(struct kstat *, struct rwlock *); void kstat_set_mutex(struct kstat *, struct mutex *); void kstat_set_cpu(struct kstat *, struct cpu_info *); +void kstat_set_nolock(struct kstat *); int kstat_read_nop(struct kstat *); Index: dev/kstat.c =================================================================== RCS file: /cvs/src/sys/dev/kstat.c,v retrieving revision 1.2 diff -u -p -r1.2 kstat.c --- dev/kstat.c 31 Jan 2022 05:09:17 -0000 1.2 +++ dev/kstat.c 25 Oct 2022 21:13:46 -0000 @@ -135,6 +135,14 @@ const struct kstat_lock_ops kstat_cpu_op kstat_cpu_leave, }; +void kstat_nolock_enter(void *); +void kstat_nolock_leave(void *); + +const struct kstat_lock_ops kstat_nolock_ops = { + (void (*)(void *))kstat_nolock_enter, + (void (*)(void *))kstat_nolock_leave, +}; + struct rwlock kstat_lock = RWLOCK_INITIALIZER("kstat"); /* @@ -603,6 +611,27 @@ kstat_set_cpu(struct kstat *ks, struct c ks->ks_lock = ci; ks->ks_lock_ops = &kstat_cpu_ops; +} + +void +kstat_nolock_enter(void *p) +{ + /* nop */ +} + +void +kstat_nolock_leave(void *p) +{ + /* nop */ +} + +void +kstat_set_nolock(struct kstat *ks) +{ + KASSERT(ks->ks_state == KSTAT_S_CREATED); + + ks->ks_lock = NULL; + ks->ks_lock_ops = &kstat_nolock_ops; } int