Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 3 May 2010 09:46:47 +0000 (UTC)
From:      Xin LI <delphij@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   svn commit: r207560 - stable/8/sys/cddl/compat/opensolaris/kern
Message-ID:  <201005030946.o439klsv040687@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: delphij
Date: Mon May  3 09:46:47 2010
New Revision: 207560
URL: http://svn.freebsd.org/changeset/base/207560

Log:
  MFC r206838:
  
  Partially MFp4 #176265 by pjd@:
  
   - Properly initialize and destroy system_taskq.
   - Add a dummy implementation of taskq_create_proc().
  
  Note: We do not currently use system_taskq in ZFS so this is mostly a
  no-op at this time.  Proper system_taskq initialization is required
  by newer ZFS code.
  
  Ok'ed by:	pjd

Modified:
  stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)
  stable/8/sys/geom/sched/   (props changed)

Modified: stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c
==============================================================================
--- stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c	Mon May  3 09:35:40 2010	(r207559)
+++ stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c	Mon May  3 09:46:47 2010	(r207560)
@@ -52,9 +52,9 @@ static void
 system_taskq_init(void *arg)
 {
 
-	system_taskq = (taskq_t *)taskqueue_thread;
 	taskq_zone = uma_zcreate("taskq_zone", sizeof(struct ostask),
 	    NULL, NULL, NULL, NULL, 0, 0);
+	system_taskq = taskq_create("system_taskq", mp_ncpus, 0, 0, 0, 0);
 }
 SYSINIT(system_taskq_init, SI_SUB_CONFIGURE, SI_ORDER_ANY, system_taskq_init, NULL);
 
@@ -62,6 +62,7 @@ static void
 system_taskq_fini(void *arg)
 {
 
+	taskq_destroy(system_taskq);
 	uma_zdestroy(taskq_zone);
 }
 SYSUNINIT(system_taskq_fini, SI_SUB_CONFIGURE, SI_ORDER_ANY, system_taskq_fini, NULL);
@@ -72,10 +73,8 @@ taskq_create(const char *name, int nthre
 {
 	taskq_t *tq;
 
-	if ((flags & TASKQ_THREADS_CPU_PCT) != 0) {
-		/* TODO: Calculate number od threads. */
-		printf("%s: TASKQ_THREADS_CPU_PCT\n", __func__);
-	}
+	if ((flags & TASKQ_THREADS_CPU_PCT) != 0)
+		nthreads = MAX((mp_ncpus * nthreads) / 100, 1);
 
 	tq = kmem_alloc(sizeof(*tq), KM_SLEEP);
 	tq->tq_queue = taskqueue_create(name, M_WAITOK, taskqueue_thread_enqueue,
@@ -85,6 +84,14 @@ taskq_create(const char *name, int nthre
 	return ((taskq_t *)tq);
 }
 
+taskq_t *
+taskq_create_proc(const char *name, int nthreads, pri_t pri, int minalloc,
+    int maxalloc, proc_t *proc __unused, uint_t flags)
+{
+
+	return (taskq_create(name, nthreads, pri, minalloc, maxalloc, flags));
+}
+
 void
 taskq_destroy(taskq_t *tq)
 {



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