From b21c774f9611a2013048bb9dfc02468e6860dad1 Mon Sep 17 00:00:00 2001 From: mpi Date: Mon, 7 Dec 2020 16:55:28 +0000 Subject: Convert the per-process thread list into a SMR_TAILQ. Currently all iterations are done under KERNEL_LOCK() and therefor use the *_LOCKED() variant. From and ok claudio@ --- lib/libkvm/kvm_proc2.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'lib/libkvm/kvm_proc2.c') diff --git a/lib/libkvm/kvm_proc2.c b/lib/libkvm/kvm_proc2.c index 96f7dc91b92..259fdfe8ec9 100644 --- a/lib/libkvm/kvm_proc2.c +++ b/lib/libkvm/kvm_proc2.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kvm_proc2.c,v 1.31 2019/12/11 12:36:28 sthen Exp $ */ +/* $OpenBSD: kvm_proc2.c,v 1.32 2020/12/07 16:55:28 mpi Exp $ */ /* $NetBSD: kvm_proc.c,v 1.30 1999/03/24 05:50:50 mrg Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -341,8 +341,9 @@ kvm_proclist(kvm_t *kd, int op, int arg, struct process *pr, kp.p_pctcpu = 0; kp.p_stat = (process.ps_flags & PS_ZOMBIE) ? SDEAD : SIDL; - for (p = TAILQ_FIRST(&process.ps_threads); p != NULL; - p = TAILQ_NEXT(&proc, p_thr_link)) { + for (p = SMR_TAILQ_FIRST_LOCKED(&process.ps_threads); + p != NULL; + p = SMR_TAILQ_NEXT_LOCKED(&proc, p_thr_link)) { if (KREAD(kd, (u_long)p, &proc)) { _kvm_err(kd, kd->program, "can't read proc at %lx", @@ -376,8 +377,8 @@ kvm_proclist(kvm_t *kd, int op, int arg, struct process *pr, if (!dothreads) continue; - for (p = TAILQ_FIRST(&process.ps_threads); p != NULL; - p = TAILQ_NEXT(&proc, p_thr_link)) { + for (p = SMR_TAILQ_FIRST_LOCKED(&process.ps_threads); p != NULL; + p = SMR_TAILQ_NEXT_LOCKED(&proc, p_thr_link)) { if (KREAD(kd, (u_long)p, &proc)) { _kvm_err(kd, kd->program, "can't read proc at %lx", -- cgit v1.2.3-59-g8ed1b