From patchwork Mon Jul 26 17:51:28 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sridhar Samudrala X-Patchwork-Id: 114322 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.4/8.14.3) with ESMTP id o6QHqTGu004100 for ; Mon, 26 Jul 2010 17:52:29 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754533Ab0GZRvt (ORCPT ); Mon, 26 Jul 2010 13:51:49 -0400 Received: from e37.co.us.ibm.com ([32.97.110.158]:37946 "EHLO e37.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751526Ab0GZRvr (ORCPT ); Mon, 26 Jul 2010 13:51:47 -0400 Received: from d03relay04.boulder.ibm.com (d03relay04.boulder.ibm.com [9.17.195.106]) by e37.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id o6QHnqnt018253; Mon, 26 Jul 2010 11:49:52 -0600 Received: from d03av04.boulder.ibm.com (d03av04.boulder.ibm.com [9.17.195.170]) by d03relay04.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id o6QHpfQS119202; Mon, 26 Jul 2010 11:51:43 -0600 Received: from d03av04.boulder.ibm.com (loopback [127.0.0.1]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id o6QHpX3c022099; Mon, 26 Jul 2010 11:51:34 -0600 Received: from [9.65.206.92] (sig-9-65-206-92.mts.ibm.com [9.65.206.92]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id o6QHpTjF021842; Mon, 26 Jul 2010 11:51:30 -0600 Subject: Re: [PATCH repost] sched: export sched_set/getaffinity to modules From: Sridhar Samudrala To: "Michael S. Tsirkin" Cc: Oleg Nesterov , Peter Zijlstra , Tejun Heo , Ingo Molnar , netdev , lkml , "kvm@vger.kernel.org" , Andrew Morton , Dmitri Vorobiev , Jiri Kosina , Thomas Gleixner , Andi Kleen In-Reply-To: <20100726171230.GA27644@redhat.com> References: <20100701130816.GB32223@redhat.com> <1277991024.1917.108.camel@laptop> <20100701133956.GD32223@redhat.com> <4C2CA5C5.4040402@kernel.org> <20100701144624.GA11171@redhat.com> <4C2CABF2.2020801@kernel.org> <1277996135.1917.198.camel@laptop> <4C2E2987.9040702@us.ibm.com> <1278094270.1917.288.camel@laptop> <20100702210637.GA12433@redhat.com> <20100726171230.GA27644@redhat.com> Date: Mon, 26 Jul 2010 10:51:28 -0700 Message-ID: <1280166688.3375.5.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.30.2 (2.30.2-1.fc13) Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Mon, 26 Jul 2010 17:52:30 +0000 (UTC) diff --git a/include/linux/kthread.h b/include/linux/kthread.h index aabc8a1..634eaf7 100644 --- a/include/linux/kthread.h +++ b/include/linux/kthread.h @@ -9,6 +9,11 @@ struct task_struct *kthread_create(int (*threadfn)(void *data), const char namefmt[], ...) __attribute__((format(printf, 3, 4))); +struct task_struct *kthread_clone(int (*threadfn)(void *data), + void *data, + const char namefmt[], ...) + __attribute__((format(printf, 3, 4))); + /** * kthread_run - create and wake a thread. * @threadfn: the function to run until signal_pending(current). diff --git a/kernel/kthread.c b/kernel/kthread.c index 83911c7..806dae5 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c @@ -149,6 +149,38 @@ struct task_struct *kthread_create(int (*threadfn)(void *data), } EXPORT_SYMBOL(kthread_create); +struct task_struct *kthread_clone(int (*threadfn)(void *data), + void *data, + const char namefmt[], + ...) +{ + struct kthread_create_info create; + int pid; + + create.threadfn = threadfn; + create.data = data; + init_completion(&create.done); + INIT_LIST_HEAD(&create.list); + + pid = kernel_thread(kthread, &create, CLONE_FS); + if (pid < 0) { + create.result = ERR_PTR(pid); + complete(&create.done); + } + wait_for_completion(&create.done); + + if (!IS_ERR(create.result)) { + va_list args; + va_start(args, namefmt); + vsnprintf(create.result->comm, sizeof(create.result->comm), + namefmt, args); + va_end(args); + } + + return create.result; +} +EXPORT_SYMBOL(kthread_clone); + /** * kthread_bind - bind a just-created kthread to a cpu. * @p: thread created by kthread_create().