Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 13 Jun 2002 11:30:11 -0700 (PDT)
From:      Julian Elischer <julian@elischer.org>
To:        Brian Feldman <green@FreeBSD.org>
Cc:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   Re: PERFORCE change 12837 for review
Message-ID:  <Pine.BSF.4.21.0206131129150.94971-100000@InterJet.elischer.org>
In-Reply-To: <200206131800.g5DI0tp46864@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
thanks..
I had to rush off last night after jhb and I added that and we didn't have
time to test it yet..


On Thu, 13 Jun 2002, Brian Feldman wrote:

> http://people.freebsd.org/~peter/p4db/chv.cgi?CH=12837
> 
> Change 12837 by green@green_laptop_1 on 2002/06/13 11:00:16
> 
> 	Make zombie_thread_lock back into a spin lock and remove the
> 	condition where it could sleep; then, make the kernel actually
> 	able to boot by adding it to witness's lock order list!!!
> 
> Affected files ...
> 
> ... //depot/projects/kse/sys/kern/kern_thread.c#67 edit
> ... //depot/projects/kse/sys/kern/subr_witness.c#27 edit
> 
> Differences ...
> 
> ==== //depot/projects/kse/sys/kern/kern_thread.c#67 (text+ko) ====
> 
> @@ -75,7 +75,7 @@
>  tdlist_head_t zombie_threads = TAILQ_HEAD_INITIALIZER(zombie_threads);
>  struct mtx zombie_thread_lock;
>  MTX_SYSINIT(zombie_thread_lock, &zombie_thread_lock,
> -    "zombie_thread_lock", MTX_DEF);
> +    "zombie_thread_lock", MTX_SPIN);
>  
>  /*
>   * Pepare a thread for use.
> @@ -241,9 +241,9 @@
>  void
>  thread_stash(struct thread *td)
>  {
> -	mtx_lock(&zombie_thread_lock);
> +	mtx_lock_spin(&zombie_thread_lock);
>  	TAILQ_INSERT_HEAD(&zombie_threads, td, td_runq);
> -	mtx_unlock(&zombie_thread_lock);
> +	mtx_unlock_spin(&zombie_thread_lock);
>  }
>  
>  /* 
> @@ -252,18 +252,17 @@
>  void
>  thread_reap(void)
>  {
> -	struct thread *td_reaped, *td_next;
> +	struct thread *td_reaped;
>  
> -	mtx_lock(&zombie_thread_lock);
> -	td_reaped = TAILQ_FIRST(&zombie_threads);
> -	while (td_reaped) {
> -		td_next = TAILQ_NEXT(td_reaped, td_runq);
> +	mtx_lock_spin(&zombie_thread_lock);
> +	while (!TAILQ_EMPTY(&zombie_threads)) {
> +		td_reaped = TAILQ_FIRST(&zombie_threads);
>  		TAILQ_REMOVE(&zombie_threads, td_reaped, td_runq);
> +		mtx_unlock_spin(&zombie_thread_lock);
>  		thread_free(td_reaped);
> -		td_reaped = td_next;
> +		mtx_lock_spin(&zombie_thread_lock);
>  	}
> -	mtx_unlock(&zombie_thread_lock);
> -	
> +	mtx_unlock_spin(&zombie_thread_lock);
>  }
>  
>  /*
> 
> ==== //depot/projects/kse/sys/kern/subr_witness.c#27 (text+ko) ====
> 
> @@ -225,6 +225,7 @@
>  #endif
>  	{ "clk", &lock_class_mtx_spin },
>  	{ "mutex profiling lock", &lock_class_mtx_spin },
> +	{ "zombie_thread_lock", &lock_class_mtx_spin },
>  	{ NULL, NULL },
>  	{ NULL, NULL }
>  };
> 


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe p4-projects" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0206131129150.94971-100000>