Re: [PATCH 1/2] mm: convert k{un}map_atomic(p, KM_type) to k{un}map_atomic(p)
From: Peter Zijlstra <peterz@infradead.org>
Date: 2011-08-29 12:33:20
Also in:
linux-mm, lkml
From: Peter Zijlstra <peterz@infradead.org>
Date: 2011-08-29 12:33:20
Also in:
linux-mm, lkml
On Fri, 2011-08-26 at 16:40 -0400, Nick Bowler wrote:
quoted
Extra marks will be awarded for working out how to make unconverted code generate a compile warning ;)It's possible to (ab)use the C preprocessor to accomplish this sort of thing. For instance, consider the following: #include <stdio.h> int foo(int x) { return x; } /* Deprecated; call foo instead. */ static inline int __attribute__((deprecated)) foo_unconverted(int x, int unused) { return foo(x); } #define PASTE(a, b) a ## b #define PASTE2(a, b) PASTE(a, b) #define NARG_(_9, _8, _7, _6, _5, _4, _3, _2, _1, n, ...) n #define NARG(...) NARG_(__VA_ARGS__, 9, 8, 7, 6, 5, 4, 3, 2, 1, :) #define foo1(...) foo(__VA_ARGS__) #define foo2(...) foo_unconverted(__VA_ARGS__) #define foo(...) PASTE2(foo, NARG(__VA_ARGS__)(__VA_ARGS__))
Very neat ;-)