aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/pmem.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/pmem.h')
-rw-r--r--include/linux/pmem.h22
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
45static inline int arch_memcpy_from_pmem(void *dst, const void __pmem *src,
46 size_t n)
47{
48 BUG();
49 return -EFAULT;
50}
51
45static inline size_t arch_copy_from_iter_pmem(void __pmem *addr, size_t bytes, 52static 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 */
74static inline void memcpy_from_pmem(void *dst, void __pmem const *src, size_t size) 83static 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
79static inline bool arch_has_pmem_api(void) 89static inline bool arch_has_pmem_api(void)