From patchwork Sun May 1 22:42:47 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: William Breathitt Gray X-Patchwork-Id: 617292 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3qyjBV5Mjfz9s3s for ; Mon, 2 May 2016 08:42:58 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=bThk0D7H; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752424AbcEAWm5 (ORCPT ); Sun, 1 May 2016 18:42:57 -0400 Received: from mail-yw0-f177.google.com ([209.85.161.177]:34172 "EHLO mail-yw0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752323AbcEAWm4 (ORCPT ); Sun, 1 May 2016 18:42:56 -0400 Received: by mail-yw0-f177.google.com with SMTP id j74so221888211ywg.1; Sun, 01 May 2016 15:42:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=I1Oir+9XU8oVqG03/OF7mW9H0nXD7pTZg8Nv/6oUgo0=; b=bThk0D7HdcdXrss/dlZaxPbGg1YhusdUGTxawMJ+wBXBLsbgwkegikIbQOjLWZf/ST dvKHmJHqY/heBcvfJUxta8cg/wpWEDr3lUH5K5xx1X7alagsXm63tKbCS/zbtU7uVCQt riNd+IiQaTE6c0PYE453p5YTr6A4jstZsOvt/sa2/9fbPnPUTyM+y6qJ11+85p4ILSuw X+E9UjCL1RO0LSZk6e+fQIT2Whqy0QiJkJn3UDseUkAUuX46jRV1XviBb/8O+doM04F9 1wYmWWSNTC0nVjIAWipqVfD4ZasBwV48SOfgz6RrofNGQ1nOpISVJHJrP30hUHzR/gKz /XrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=I1Oir+9XU8oVqG03/OF7mW9H0nXD7pTZg8Nv/6oUgo0=; b=TS4NuCQ+NkUUuXhZZ3RzO6CFG2Jk0q5VJIUhZ1SqL5E9U01d3Ri8zAFyZKOWMSRbHD RpXC8wlrycGNc9cbFyy2NyM2jOMX25BhqmQItAl+xX7Qv0++X6KqMFaqQzFWbht0qHAG v4yGT3YfDoE7JiquHkuRuYrX4zL8LRbmMFWumKYYsHSlRqBZ/ZmUDrGBr7nfChRpSZ5b kywpJioiLIJdNZHhT2Mz5jH1++BlpEKeb7+VceeZFJ4lmohoQpiotMiue+/uxbASPY/u RTv4iygTSlBo1FcaiXYAKOTYckqKegnZghuUqnYwvsE8is3Orw5DHYgRcz2zmBVNOlPb K+HA== X-Gm-Message-State: AOPr4FUaen1cHuMMLkX/PrCTjlfPmrknNuFYMFmx3nanqFJzLV4wkkB3Vvkl942Fz/O4Sg== X-Received: by 10.129.6.214 with SMTP id 205mr16892280ywg.300.1462142575503; Sun, 01 May 2016 15:42:55 -0700 (PDT) Received: from localhost (71-47-58-73.res.bhn.net. [71.47.58.73]) by smtp.gmail.com with ESMTPSA id f186sm13823997ywa.6.2016.05.01.15.42.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 01 May 2016 15:42:55 -0700 (PDT) From: William Breathitt Gray To: gregkh@linuxfoundation.org Cc: linux-iio@vger.kernel.org, linux-watchdog@vger.kernel.org, linux-gpio@vger.kernel.org, William Breathitt Gray Subject: [PATCH v2 01/10] isa: Implement the module_isa_driver macro Date: Sun, 1 May 2016 18:42:47 -0400 Message-Id: <76b1401413d22c0b6e095a6fdeda59ca75f7ef4b.1462141338.git.vilhelm.gray@gmail.com> X-Mailer: git-send-email 2.7.3 In-Reply-To: References: Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org The module_isa_driver macro is a helper macro for ISA drivers which do not do anything special in module init/exit. This eliminates a lot of boilerplate code. Each module may only use this macro once, and calling it replaces module_init and module_exit. Signed-off-by: William Breathitt Gray --- include/linux/isa.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/include/linux/isa.h b/include/linux/isa.h index b0270e3..e394917 100644 --- a/include/linux/isa.h +++ b/include/linux/isa.h @@ -36,4 +36,25 @@ static inline void isa_unregister_driver(struct isa_driver *d) } #endif +/** + * module_isa_driver() - Helper macro for registering a ISA driver + * @__isa_driver: isa_driver struct + * @__num_isa_dev: number of devices to register + * + * Helper macro for ISA drivers which do not do anything special in module + * init/exit. This eliminates a lot of boilerplate code. Each module may only + * use this macro once, and calling it replaces module_init and module_exit. + */ +#define module_isa_driver(__isa_driver, __num_isa_dev) \ +static int __init __isa_driver##_init(void) \ +{ \ + return isa_register_driver(&(__isa_driver), __num_isa_dev); \ +} \ +module_init(__isa_driver##_init); \ +static void __exit __isa_driver##_exit(void) \ +{ \ + isa_unregister_driver(&(__isa_driver)); \ +} \ +module_exit(__isa_driver##_exit); + #endif /* __LINUX_ISA_H */