X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lib%2Fringbuffer%2Fbackend_internal.h;fp=lib%2Fringbuffer%2Fbackend_internal.h;h=442f357a4c40120aae2f06d897aee7a723f1cd56;hb=4ea00e4f764eb18686121161a98e4ef442fed2c0;hp=d92fe36c82f39326ad846054e5f1bb248f030126;hpb=c595c36f753dde1bccbee455bbfeb8b31b7f41d1;p=lttng-modules.git diff --git a/lib/ringbuffer/backend_internal.h b/lib/ringbuffer/backend_internal.h index d92fe36c..442f357a 100644 --- a/lib/ringbuffer/backend_internal.h +++ b/lib/ringbuffer/backend_internal.h @@ -15,6 +15,7 @@ #include "../../wrapper/ringbuffer/backend_types.h" #include "../../wrapper/ringbuffer/frontend_types.h" #include +#include /* Ring buffer backend API presented to the frontend */ @@ -40,6 +41,12 @@ void lib_ring_buffer_backend_exit(void); extern void _lib_ring_buffer_write(struct lib_ring_buffer_backend *bufb, size_t offset, const void *src, size_t len, ssize_t pagecpy); +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, + size_t offset, const void *src, + size_t len, ssize_t pagecpy); /* * Subbuffer ID bits for overwrite mode. Need to fit within a single word to be @@ -414,4 +421,29 @@ do { \ inline_memcpy(dest, src, __len); \ } while (0) +/* + * We use __copy_from_user 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, + const void __user *src, + unsigned long len) +{ + return __copy_from_user(dest, src, len); +} + +/* + * write len bytes to dest with c + */ +static inline +void lib_ring_buffer_do_memset(char *dest, int c, + unsigned long len) +{ + unsigned long i; + + for (i = 0; i < len; i++) + dest[i] = c; +} + #endif /* _LINUX_RING_BUFFER_BACKEND_INTERNAL_H */