Merge branch 'kmap_atomic' of git://github.com/congwang/linux
Pull final kmap_atomic cleanups from Cong Wang: "This should be the final round of cleanup, as the definitions of enum km_type finally get removed from the whole tree. The patches have been in linux-next for a long time." * 'kmap_atomic' of git://github.com/congwang/linux: pipe: remove KM_USER0 from comments vmalloc: remove KM_USER0 from comments feature-removal-schedule.txt: remove kmap_atomic(page, km_type) tile: remove km_type definitions um: remove km_type definitions asm-generic: remove km_type definitions avr32: remove km_type definitions frv: remove km_type definitions powerpc: remove km_type definitions arm: remove km_type definitions highmem: remove the deprecated form of kmap_atomic tile: remove usage of enum km_type frv: remove the second parameter of kmap_atomic_primary() jbd2: remove the second argument of kmap_atomic
This commit is contained in:
@@ -109,55 +109,16 @@ static inline void kmap_atomic_idx_pop(void)
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 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 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 __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_deprecated(addr, km) \
|
||||
do { \
|
||||
BUILD_BUG_ON(__same_type((addr), struct page *)); \
|
||||
__kunmap_atomic_deprecated(addr, km); \
|
||||
} while (0)
|
||||
|
||||
#define kunmap_atomic_withcheck(addr) \
|
||||
#define kunmap_atomic(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
|
||||
|
||||
@@ -86,11 +86,9 @@ struct pipe_buf_operations {
|
||||
* mapping or not. The atomic map is faster, however you can't take
|
||||
* page faults before calling ->unmap() again. So if you need to eg
|
||||
* access user data through copy_to/from_user(), then you must get
|
||||
* a non-atomic map. ->map() uses the KM_USER0 atomic slot for
|
||||
* atomic maps, so you can't map more than one pipe_buffer at once
|
||||
* and you have to be careful if mapping another page as source
|
||||
* or destination for a copy (IOW, it has to use something else
|
||||
* than KM_USER0).
|
||||
* a non-atomic map. ->map() uses the kmap_atomic slot for
|
||||
* atomic maps, you have to be careful if mapping another page as
|
||||
* source or destination for a copy.
|
||||
*/
|
||||
void * (*map)(struct pipe_inode_info *, struct pipe_buffer *, int);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user