extern void _lib_ring_buffer_memset(struct lib_ring_buffer_backend *bufb,
size_t offset, int c, size_t len,
ssize_t pagecpy);
-extern void _lib_ring_buffer_copy_from_user(struct lib_ring_buffer_backend *bufb,
+extern void _lib_ring_buffer_strcpy(struct lib_ring_buffer_backend *bufb,
+ size_t offset, const char *src, size_t len,
+ size_t pagecpy, int pad);
+extern void _lib_ring_buffer_copy_from_user_inatomic(struct lib_ring_buffer_backend *bufb,
size_t offset, const void *src,
size_t len, ssize_t pagecpy);
+extern void _lib_ring_buffer_strcpy_from_user_inatomic(struct lib_ring_buffer_backend *bufb,
+ size_t offset, const char __user *src, size_t len,
+ size_t pagecpy, int pad);
/*
* Subbuffer ID bits for overwrite mode. Need to fit within a single word to be
/*
* Must be executed at subbuffer delivery when the writer has _exclusive_
- * subbuffer access. See ring_buffer_check_deliver() for details.
- * ring_buffer_get_records_count() must be called to get the records count
- * before this function, because it resets the records_commit count.
+ * subbuffer access. See lib_ring_buffer_check_deliver() for details.
+ * lib_ring_buffer_get_records_count() must be called to get the records
+ * count before this function, because it resets the records_commit
+ * count.
*/
static inline
unsigned long subbuffer_count_records_overrun(
} while (0)
/*
- * We use __copy_from_user to copy userspace data since we already
+ * We use __copy_from_user_inatomic to copy userspace data since we already
* did the access_ok for the whole range.
*/
static inline
-unsigned long lib_ring_buffer_do_copy_from_user(void *dest,
+unsigned long lib_ring_buffer_do_copy_from_user_inatomic(void *dest,
const void __user *src,
unsigned long len)
{
- return __copy_from_user(dest, src, len);
+ return __copy_from_user_inatomic(dest, src, len);
}
/*