From patchwork Tue Feb 8 09:41:55 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tejun Heo X-Patchwork-Id: 540041 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p189gPtt028837 for ; Tue, 8 Feb 2011 09:42:25 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752671Ab1BHJmB (ORCPT ); Tue, 8 Feb 2011 04:42:01 -0500 Received: from mail-fx0-f46.google.com ([209.85.161.46]:39093 "EHLO mail-fx0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752555Ab1BHJmA (ORCPT ); Tue, 8 Feb 2011 04:42:00 -0500 Received: by fxm20 with SMTP id 20so5918531fxm.19 for ; Tue, 08 Feb 2011 01:41:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:sender:date:from:to:cc:subject:message-id :references:mime-version:content-type:content-disposition :in-reply-to:user-agent; bh=TJX5uUdDX+LrJvf8DIveNOBkPXM1yryU6lGDmoQmON4=; b=uu8etBwj5bw/SYGdTqOTCPpuVECuOmVuzxXN5nuDtUonr+Oj3DlK9/LXLQ/qyi6+bf +Q/Uoduxxxg3E6hN4fKe/tC+gJr1FuhjjifTRGvwvqX99UrT8uQE6VsPDsfML9Jhs9b4 iu3RN76wE8kb56X21hf3k63UuW//dUhsLTBsw= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; b=We8tHYWV7RIqWGwwrSUdC4/8DeKQdhvb5D/Bw7p8/bbHVoMSE5sIOchgMSwI438uKK SF5Gv25W++QMHzd2FM90QkwnnuPOPUkoN3aXk1Psu8gLKIq7Wy7ta16h/idC5ZTmP6mW fjJPnfUKR7+mXMx/meRrev8TJZp7QJCsSkwKI= Received: by 10.223.96.199 with SMTP id i7mr6614317fan.101.1297158118903; Tue, 08 Feb 2011 01:41:58 -0800 (PST) Received: from htj.dyndns.org ([130.75.117.88]) by mx.google.com with ESMTPS id b7sm1609747faa.42.2011.02.08.01.41.57 (version=SSLv3 cipher=RC4-MD5); Tue, 08 Feb 2011 01:41:58 -0800 (PST) Date: Tue, 8 Feb 2011 10:41:55 +0100 From: Tejun Heo To: "Rafael J. Wysocki" , Dmitry Torokhov Cc: Len Brown , ACPI Devel Mailing List , LKML , Linux PM mailing list Subject: [PATCH wq#for-2.6.39] workqueue: add system_freezeable_wq Message-ID: <20110208094155.GB6558@htj.dyndns.org> References: <201102080029.57195.rjw@sisk.pl> <20110208044712.GA906@core.coreip.homeip.net> <201102081020.25646.rjw@sisk.pl> <20110208093212.GA6558@htj.dyndns.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20110208093212.GA6558@htj.dyndns.org> User-Agent: Mutt/1.5.20 (2009-06-14) Sender: linux-acpi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Tue, 08 Feb 2011 09:42:25 +0000 (UTC) diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h index 1ac1158..de6a755 100644 --- a/include/linux/workqueue.h +++ b/include/linux/workqueue.h @@ -286,11 +286,15 @@ enum { * any specific CPU, not concurrency managed, and all queued works are * executed immediately as long as max_active limit is not reached and * resources are available. + * + * system_freezeable_wq is equivalent to system_wq except that it's + * freezeable. */ extern struct workqueue_struct *system_wq; extern struct workqueue_struct *system_long_wq; extern struct workqueue_struct *system_nrt_wq; extern struct workqueue_struct *system_unbound_wq; +extern struct workqueue_struct *system_freezeable_wq; extern struct workqueue_struct * __alloc_workqueue_key(const char *name, unsigned int flags, int max_active, diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 11869fa..2b8de0c 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -3764,8 +3764,10 @@ static int __init init_workqueues(void) system_nrt_wq = alloc_workqueue("events_nrt", WQ_NON_REENTRANT, 0); system_unbound_wq = alloc_workqueue("events_unbound", WQ_UNBOUND, WQ_UNBOUND_MAX_ACTIVE); + system_freezeable_wq = alloc_workqueue("events_freezeable", + WQ_FREEZEABLE, 0); BUG_ON(!system_wq || !system_long_wq || !system_nrt_wq || - !system_unbound_wq); + !system_unbound_wq || !system_freezeable_wq); return 0; } early_initcall(init_workqueues);