Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Jul 2007 09:21:18 +0000 (UTC)
From:      Attilio Rao <attilio@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/kern kern_kse.c kern_thread.c src/sys/sys proc.h
Message-ID:  <200707270921.l6R9LINj060042@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
attilio     2007-07-27 09:21:18 UTC

  FreeBSD src repository

  Modified files:
    sys/kern             kern_kse.c kern_thread.c 
    sys/sys              proc.h 
  Log:
  Actually, upcalls cannot be freed while destroying the thread because we
  should call uma_zfree() with various spinlock helds.  Rearranging the
  code would not help here because we cannot break atomicity respect
  prcess spinlock, so the only one choice we have is to defer the operation.
  In order to do this use a global queue synchronized through the kse_lock
  spinlock which is freed at any thread_alloc() / thread_wait() through a
  call to thread_reap().
  Note that this approach is not ideal as we should want a per-process
  list of zombie upcalls, but it follows initial guidelines of KSE authors.
  
  Tested by: jkim, pav
  Approved by: jeff, julian
  Approved by: re
  
  Revision  Changes    Path
  1.234     +17 -0     src/sys/kern/kern_kse.c
  1.252     +3 -0      src/sys/kern/kern_thread.c
  1.489     +1 -0      src/sys/sys/proc.h



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200707270921.l6R9LINj060042>