linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Cong Wang <amwang@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Cong Wang <amwang@redhat.com>,
	Cesar Eduardo Barros <cesarb@cesarb.net>,
	Nick Bowler <nbowler@elliptictech.com>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Stephen Warren <swarren@nvidia.com>
Subject: [PATCH 01/60] highmem: mark k[un]map_atomic() with two arguments as deprecated
Date: Fri, 10 Feb 2012 13:39:22 +0800	[thread overview]
Message-ID: <1328852421-19678-2-git-send-email-amwang@redhat.com> (raw)
In-Reply-To: <1328852421-19678-1-git-send-email-amwang@redhat.com>

For backward compatibility, we still keep the deprecated form,
and will warn the users if they still use the deprecated one, like this:

drivers/block/drbd/drbd_bitmap.c: In function ‘bm_page_io_async’:
drivers/block/drbd/drbd_bitmap.c:973:3: warning: ‘kmap_atomic_deprecated’ is deprecated (declared at /home/wangcong/linux-2.6/include/linux/highmem.h:124)
drivers/block/drbd/drbd_bitmap.c:977:3: warning: ‘kunmap_atomic_deprecated’ is deprecated (declared at /home/wangcong/linux-2.6/include/linux/highmem.h:144)

Thanks to Nick Bowler for the cpp trick!

Cc: Cesar Eduardo Barros <cesarb@cesarb.net>
Cc: Nick Bowler <nbowler@elliptictech.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Cong Wang <amwang@redhat.com>
---
 include/linux/highmem.h |   52 +++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 46 insertions(+), 6 deletions(-)

diff --git a/include/linux/highmem.h b/include/linux/highmem.h
index 3a93f73..11617a8 100644
--- a/include/linux/highmem.h
+++ b/include/linux/highmem.h
@@ -109,20 +109,60 @@ static inline void kmap_atomic_idx_pop(void)
 #endif
 
 /*
- * Make both: kmap_atomic(page, idx) and kmap_atomic(page) work.
+ * NOTE:
+ * kmap_atomic() and kunmap_atomic() with two arguments are deprecated.
+ * We only keep them for backward compatibility, any usage of them
+ * are now warned.
  */
-#define kmap_atomic(page, args...) __kmap_atomic(page)
+
+#define PASTE(a, b) a ## b
+#define PASTE2(a, b) PASTE(a, b)
+
+#define NARG_(_2, _1, n, ...) n
+#define NARG(...) NARG_(__VA_ARGS__, 2, 1, :)
+
+static inline void *kmap_atomic(struct page *page)
+{
+	return __kmap_atomic(page);
+}
+
+static inline void __deprecated *kmap_atomic_deprecated(struct page *page,
+							enum km_type km)
+{
+	return __kmap_atomic(page);
+}
+
+#define kmap_atomic1(...) kmap_atomic(__VA_ARGS__)
+#define kmap_atomic2(...) kmap_atomic_deprecated(__VA_ARGS__)
+#define kmap_atomic(...) PASTE2(kmap_atomic, NARG(__VA_ARGS__)(__VA_ARGS__))
+
+static inline void __deprecated __kunmap_atomic_deprecated(void *addr,
+							enum km_type km)
+{
+	__kunmap_atomic(addr);
+}
 
 /*
  * Prevent people trying to call kunmap_atomic() as if it were kunmap()
  * kunmap_atomic() should get the return value of kmap_atomic, not the page.
  */
-#define kunmap_atomic(addr, args...)				\
-do {								\
-	BUILD_BUG_ON(__same_type((addr), struct page *));	\
-	__kunmap_atomic(addr);					\
+#define kunmap_atomic_deprecated(addr, km)                      \
+do {                                                            \
+	BUILD_BUG_ON(__same_type((addr), struct page *));       \
+	__kunmap_atomic_deprecated(addr, km);                   \
 } while (0)
 
+#define kunmap_atomic_withcheck(addr)                           \
+do {                                                            \
+	BUILD_BUG_ON(__same_type((addr), struct page *));       \
+	__kunmap_atomic(addr);                                  \
+} while (0)
+
+#define kunmap_atomic1(...) kunmap_atomic_withcheck(__VA_ARGS__)
+#define kunmap_atomic2(...) kunmap_atomic_deprecated(__VA_ARGS__)
+#define kunmap_atomic(...) PASTE2(kunmap_atomic, NARG(__VA_ARGS__)(__VA_ARGS__))
+/**** End of C pre-processor tricks for deprecated macros ****/
+
 /* when CONFIG_HIGHMEM is not set these will be plain clear/copy_page */
 #ifndef clear_user_highpage
 static inline void clear_user_highpage(struct page *page, unsigned long vaddr)
-- 
1.7.7.6


  reply	other threads:[~2012-02-10  5:41 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-10  5:39 [Resend PATCH 00/60] highmem: remove the second argument of k[un]map_atomic() Cong Wang
2012-02-10  5:39 ` Cong Wang [this message]
2012-02-17 23:59   ` [PATCH 01/60] highmem: mark k[un]map_atomic() with two arguments as deprecated Andrew Morton
2012-02-19 14:57     ` Cong Wang
2012-02-10  5:39 ` [PATCH 02/60] include/linux/highmem.h: remove the second argument of k[un]map_atomic() Cong Wang
2012-02-10  5:39 ` [PATCH 03/60] arm: " Cong Wang
2012-02-10  5:39 ` [PATCH 04/60] mips: " Cong Wang
2012-02-10  5:39 ` [PATCH 05/60] powerpc: " Cong Wang
2012-02-10  5:39 ` [PATCH 06/60] sh: " Cong Wang
2012-02-10  5:39 ` [PATCH 07/60] um: " Cong Wang
2012-02-10  5:39 ` [PATCH 08/60] x86: " Cong Wang
2012-02-10  5:39 ` [PATCH 09/60] crypto: " Cong Wang
2012-02-10  5:39 ` [PATCH 10/60] ata: " Cong Wang
2012-02-10  5:39 ` [PATCH 11/60] block: " Cong Wang
2012-02-10  5:39 ` [PATCH 12/60] crypto: " Cong Wang
2012-02-10  5:39 ` [PATCH 13/60] edac: " Cong Wang
2012-02-10  5:39 ` [PATCH 14/60] drm: " Cong Wang
2012-02-10  7:05   ` Thomas Hellstrom
2012-02-10  5:39 ` [PATCH 15/60] ide: " Cong Wang
2012-02-10  5:39 ` [PATCH 16/60] infiniband: " Cong Wang
2012-02-10  5:39 ` [PATCH 17/60] md: " Cong Wang
2012-02-10  5:39 ` [PATCH 18/60] media: " Cong Wang
2012-02-10  5:39 ` [PATCH 19/60] memstick: " Cong Wang
2012-02-10  5:39 ` [PATCH 20/60] net: " Cong Wang
2012-02-10  5:39 ` [PATCH 22/60] hv: " Cong Wang
2012-02-10  5:39 ` [PATCH 23/60] rtl8192u: " Cong Wang
2012-02-10  5:39 ` [PATCH 24/60] zram: " Cong Wang
2012-02-10  5:39 ` [PATCH 25/60] target: " Cong Wang
2012-02-10 22:18   ` Nicholas A. Bellinger
2012-02-13  7:44     ` Cong Wang
2012-02-10  5:39 ` [PATCH 26/60] vhost: " Cong Wang
2012-02-10  5:39 ` [PATCH 27/60] fs: " Cong Wang
2012-02-10  5:39 ` [PATCH 28/60] btrfs: " Cong Wang
2012-02-10  5:39 ` [PATCH 29/60] ecryptfs: " Cong Wang
2012-02-10 20:16   ` Tyler Hicks
2012-02-13  7:46     ` Cong Wang
2012-02-10  5:39 ` [PATCH 30/60] afs: " Cong Wang
2012-02-10  5:39 ` [PATCH 31/60] exofs: " Cong Wang
2012-02-10  5:39 ` [PATCH 32/60] ext2: " Cong Wang
2012-02-10  5:39 ` [PATCH 33/60] fuse: " Cong Wang
2012-02-10  5:39 ` [PATCH 34/60] gfs2: " Cong Wang
2012-02-10  5:39 ` [PATCH 35/60] jbd: " Cong Wang
2012-02-10  5:39 ` [PATCH 36/60] jbd2: " Cong Wang
2012-02-10  5:39 ` [PATCH 37/60] logfs: " Cong Wang
2012-02-10  5:39 ` [PATCH 38/60] minix: " Cong Wang
2012-02-10  5:40 ` [PATCH 39/60] nfs: " Cong Wang
2012-02-10  5:40 ` [PATCH 40/60] nilfs2: " Cong Wang
2012-02-10  5:40 ` [PATCH 41/60] ntfs: " Cong Wang
2012-02-10  5:40 ` [PATCH 42/60] ocfs2: " Cong Wang
2012-02-10  5:40 ` [PATCH 43/60] reiserfs: " Cong Wang
2012-02-10  5:40 ` [PATCH 44/60] squashfs: " Cong Wang
2012-02-10  5:40 ` [PATCH 45/60] ubifs: " Cong Wang
2012-02-10  5:40 ` [PATCH 46/60] udf: " Cong Wang
2012-02-10  5:40 ` [PATCH 47/60] kdb: " Cong Wang
2012-02-10  5:40 ` [PATCH 48/60] power: " Cong Wang
2012-02-10  5:40 ` [PATCH 49/60] lib: " Cong Wang
2012-02-10  5:40 ` [PATCH 50/60] mm: " Cong Wang
2012-02-10  5:40 ` [PATCH 51/60] net: " Cong Wang
2012-02-10  5:40 ` [PATCH 52/60] rds: " Cong Wang
2012-02-10  5:40 ` [PATCH 53/60] sunrpc: " Cong Wang
2012-02-10  5:40 ` [PATCH 54/60] tomoyo: " Cong Wang
2012-02-10  5:40 ` [PATCH 55/60] dm: " Cong Wang
2012-02-10  5:40 ` [PATCH 56/60] gma500: " Cong Wang
2012-02-10  5:40 ` [PATCH 57/60] zcache: " Cong Wang
2012-02-10  5:40 ` [PATCH 58/60] drbd: " Cong Wang
     [not found]   ` <CA+xKNSgdt7mc2NYTbprFspE54R_4T4PTzyGKyKESqBRyaNCPJg@mail.gmail.com>
2012-02-13  7:43     ` [Drbd-dev] " Cong Wang
2012-02-10  5:40 ` [PATCH 60/60] feature-removal-schedule.txt: schedule the deprecated form of kmap_atomic() for removal Cong Wang
     [not found] ` <1328852421-19678-60-git-send-email-amwang@redhat.com>
2012-02-10 13:05   ` [PATCH 59/60] highmem: kill all __kmap_atomic() [swarren@nvidia.com: highmem: Fix ARM build break due to __kmap_atomic rename] Chris Metcalf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1328852421-19678-2-git-send-email-amwang@redhat.com \
    --to=amwang@redhat.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=akpm@linux-foundation.org \
    --cc=cesarb@cesarb.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nbowler@elliptictech.com \
    --cc=swarren@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).