diff options
Diffstat (limited to 'include/linux/pmem.h')
-rw-r--r-- | include/linux/pmem.h | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/include/linux/pmem.h b/include/linux/pmem.h index 3ec5309e29f3..ac6d872ce067 100644 --- a/include/linux/pmem.h +++ b/include/linux/pmem.h | |||
@@ -42,6 +42,13 @@ static inline void arch_memcpy_to_pmem(void __pmem *dst, const void *src, | |||
42 | BUG(); | 42 | BUG(); |
43 | } | 43 | } |
44 | 44 | ||
45 | static inline int arch_memcpy_from_pmem(void *dst, const void __pmem *src, | ||
46 | size_t n) | ||
47 | { | ||
48 | BUG(); | ||
49 | return -EFAULT; | ||
50 | } | ||
51 | |||
45 | static inline size_t arch_copy_from_iter_pmem(void __pmem *addr, size_t bytes, | 52 | static inline size_t arch_copy_from_iter_pmem(void __pmem *addr, size_t bytes, |
46 | struct iov_iter *i) | 53 | struct iov_iter *i) |
47 | { | 54 | { |
@@ -66,14 +73,17 @@ static inline void arch_invalidate_pmem(void __pmem *addr, size_t size) | |||
66 | #endif | 73 | #endif |
67 | 74 | ||
68 | /* | 75 | /* |
69 | * Architectures that define ARCH_HAS_PMEM_API must provide | 76 | * memcpy_from_pmem - read from persistent memory with error handling |
70 | * implementations for arch_memcpy_to_pmem(), arch_wmb_pmem(), | 77 | * @dst: destination buffer |
71 | * arch_copy_from_iter_pmem(), arch_clear_pmem(), arch_wb_cache_pmem() | 78 | * @src: source buffer |
72 | * and arch_has_wmb_pmem(). | 79 | * @size: transfer length |
80 | * | ||
81 | * Returns 0 on success negative error code on failure. | ||
73 | */ | 82 | */ |
74 | static inline void memcpy_from_pmem(void *dst, void __pmem const *src, size_t size) | 83 | static inline int memcpy_from_pmem(void *dst, void __pmem const *src, |
84 | size_t size) | ||
75 | { | 85 | { |
76 | memcpy(dst, (void __force const *) src, size); | 86 | return arch_memcpy_from_pmem(dst, src, size); |
77 | } | 87 | } |
78 | 88 | ||
79 | static inline bool arch_has_pmem_api(void) | 89 | static inline bool arch_has_pmem_api(void) |