* backend-specific memcpy() operation. Calls the slow path (_ring_buffer_write)
* if copy is crossing a page boundary.
*/
* backend-specific memcpy() operation. Calls the slow path (_ring_buffer_write)
* if copy is crossing a page boundary.
*/
void lib_ring_buffer_write(const struct lib_ring_buffer_config *config,
struct lib_ring_buffer_ctx *ctx,
const void *src, size_t len)
void lib_ring_buffer_write(const struct lib_ring_buffer_config *config,
struct lib_ring_buffer_ctx *ctx,
const void *src, size_t len)
* terminating character is found in @src. Returns the number of bytes
* copied. Does *not* terminate @dest with NULL terminating character.
*/
* terminating character is found in @src. Returns the number of bytes
* copied. Does *not* terminate @dest with NULL terminating character.
*/
size_t lib_ring_buffer_do_strcpy(const struct lib_ring_buffer_config *config,
char *dest, const char *src, size_t len)
{
size_t lib_ring_buffer_do_strcpy(const struct lib_ring_buffer_config *config,
char *dest, const char *src, size_t len)
{
size_t lib_ring_buffer_do_strcpy_from_user_inatomic(const struct lib_ring_buffer_config *config,
char *dest, const char __user *src, size_t len)
{
size_t lib_ring_buffer_do_strcpy_from_user_inatomic(const struct lib_ring_buffer_config *config,
char *dest, const char __user *src, size_t len)
{
* (_ring_buffer_write_from_user_inatomic) if copy is crossing a page boundary.
* Disable the page fault handler to ensure we never try to take the mmap_sem.
*/
* (_ring_buffer_write_from_user_inatomic) if copy is crossing a page boundary.
* Disable the page fault handler to ensure we never try to take the mmap_sem.
*/
void lib_ring_buffer_copy_from_user_inatomic(const struct lib_ring_buffer_config *config,
struct lib_ring_buffer_ctx *ctx,
const void __user *src, size_t len)
void lib_ring_buffer_copy_from_user_inatomic(const struct lib_ring_buffer_config *config,
struct lib_ring_buffer_ctx *ctx,
const void __user *src, size_t len)