Re: [PATCH 01/60] highmem: mark k[un]map_atomic() with two arguments as deprecated

Andrew Morton
2012-02-17T23:59:24Z

On Fri, 10 Feb 2012 13:39:22 +0800
Cong Wang <amwang@redhat.com> wrote:

> --- 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);
> +}

Boggle.

I can't merge these patches because they're already in linux-next.

This is silly. Please send Linus the pull request for 3.4 and be sure to cc
myself on it.