X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=include%2Flttng%2Ftracepoint-event-impl.h;h=38b1dc438366546e105e359154e9fc98aff01059;hb=d26015f62c573e6d544f05caa25f0b0f645ef20c;hp=ce41fcb688d37102dc4e755f9c6aca9e530c264a;hpb=4f1d1ee53c08ab61f0208aeed80303a0dfec2c48;p=lttng-modules.git diff --git a/include/lttng/tracepoint-event-impl.h b/include/lttng/tracepoint-event-impl.h index ce41fcb6..38b1dc43 100644 --- a/include/lttng/tracepoint-event-impl.h +++ b/include/lttng/tracepoint-event-impl.h @@ -813,8 +813,7 @@ static inline size_t __event_get_align__##_name(void *__tp_locvar) \ #define _ctf_integer_ext_fetched(_type, _item, _src, _byte_order, _base, _nowrite) \ { \ _type __tmp = _src; \ - lib_ring_buffer_align_ctx(&__ctx, lttng_alignof(__tmp));\ - __chan->ops->event_write(&__ctx, &__tmp, sizeof(__tmp));\ + __chan->ops->event_write(&__ctx, &__tmp, sizeof(__tmp), lttng_alignof(__tmp)); \ } #undef _ctf_integer_ext_isuser0 @@ -840,21 +839,27 @@ static inline size_t __event_get_align__##_name(void *__tp_locvar) \ #undef _ctf_array_encoded #define _ctf_array_encoded(_type, _item, _src, _length, _encoding, _byte_order, _base, _user, _nowrite) \ - lib_ring_buffer_align_ctx(&__ctx, lttng_alignof(_type)); \ - if (_user) { \ - __chan->ops->event_write_from_user(&__ctx, _src, sizeof(_type) * (_length)); \ - } else { \ - __chan->ops->event_write(&__ctx, _src, sizeof(_type) * (_length)); \ + if (lttng_kernel_string_encoding_##_encoding == lttng_kernel_string_encoding_none) { \ + if (_user) { \ + __chan->ops->event_write_from_user(&__ctx, _src, sizeof(_type) * (_length), lttng_alignof(_type)); \ + } else { \ + __chan->ops->event_write(&__ctx, _src, sizeof(_type) * (_length), lttng_alignof(_type)); \ + } \ + } else { \ + if (_user) { \ + __chan->ops->event_pstrcpy_pad_from_user(&__ctx, (const char __user *) (_src), _length); \ + } else { \ + __chan->ops->event_pstrcpy_pad(&__ctx, (const char *) (_src), _length); \ + } \ } #if (__BYTE_ORDER == __LITTLE_ENDIAN) #undef _ctf_array_bitfield #define _ctf_array_bitfield(_type, _item, _src, _length, _user, _nowrite) \ - lib_ring_buffer_align_ctx(&__ctx, lttng_alignof(_type)); \ if (_user) { \ - __chan->ops->event_write_from_user(&__ctx, _src, sizeof(_type) * (_length)); \ + __chan->ops->event_write_from_user(&__ctx, _src, sizeof(_type) * (_length), lttng_alignof(_type)); \ } else { \ - __chan->ops->event_write(&__ctx, _src, sizeof(_type) * (_length)); \ + __chan->ops->event_write(&__ctx, _src, sizeof(_type) * (_length), lttng_alignof(_type)); \ } #else /* #if (__BYTE_ORDER == __LITTLE_ENDIAN) */ /* @@ -890,26 +895,34 @@ static inline size_t __event_get_align__##_name(void *__tp_locvar) \ default: \ BUG_ON(1); \ } \ - __chan->ops->event_write(&__ctx, &_tmp, sizeof(_type)); \ + __chan->ops->event_write(&__ctx, &_tmp, sizeof(_type), 1); \ } \ } #endif /* #else #if (__BYTE_ORDER == __LITTLE_ENDIAN) */ #undef _ctf_sequence_encoded -#define _ctf_sequence_encoded(_type, _item, _src, _length_type, \ +#define _ctf_sequence_encoded(_type, _item, _src, _length_type, \ _src_length, _encoding, _byte_order, _base, _user, _nowrite) \ - { \ + { \ _length_type __tmpl = this_cpu_ptr(<tng_dynamic_len_stack)->stack[__dynamic_len_idx]; \ - lib_ring_buffer_align_ctx(&__ctx, lttng_alignof(_length_type));\ - __chan->ops->event_write(&__ctx, &__tmpl, sizeof(_length_type));\ - } \ - lib_ring_buffer_align_ctx(&__ctx, lttng_alignof(_type)); \ - if (_user) { \ - __chan->ops->event_write_from_user(&__ctx, _src, \ - sizeof(_type) * __get_dynamic_len(dest)); \ - } else { \ - __chan->ops->event_write(&__ctx, _src, \ - sizeof(_type) * __get_dynamic_len(dest)); \ + __chan->ops->event_write(&__ctx, &__tmpl, sizeof(_length_type), lttng_alignof(_length_type));\ + } \ + if (lttng_kernel_string_encoding_##_encoding == lttng_kernel_string_encoding_none) { \ + if (_user) { \ + __chan->ops->event_write_from_user(&__ctx, _src, \ + sizeof(_type) * __get_dynamic_len(dest), lttng_alignof(_type)); \ + } else { \ + __chan->ops->event_write(&__ctx, _src, \ + sizeof(_type) * __get_dynamic_len(dest), lttng_alignof(_type)); \ + } \ + } else { \ + if (_user) { \ + __chan->ops->event_pstrcpy_pad_from_user(&__ctx, (const char __user *) (_src), \ + __get_dynamic_len(dest)); \ + } else { \ + __chan->ops->event_pstrcpy_pad(&__ctx, (const char *) (_src), \ + __get_dynamic_len(dest)); \ + } \ } #if (__BYTE_ORDER == __LITTLE_ENDIAN) @@ -919,16 +932,14 @@ static inline size_t __event_get_align__##_name(void *__tp_locvar) \ _user, _nowrite) \ { \ _length_type __tmpl = this_cpu_ptr(<tng_dynamic_len_stack)->stack[__dynamic_len_idx] * sizeof(_type) * CHAR_BIT; \ - lib_ring_buffer_align_ctx(&__ctx, lttng_alignof(_length_type));\ - __chan->ops->event_write(&__ctx, &__tmpl, sizeof(_length_type));\ + __chan->ops->event_write(&__ctx, &__tmpl, sizeof(_length_type), lttng_alignof(_length_type)); \ } \ - lib_ring_buffer_align_ctx(&__ctx, lttng_alignof(_type)); \ if (_user) { \ __chan->ops->event_write_from_user(&__ctx, _src, \ - sizeof(_type) * __get_dynamic_len(dest)); \ + sizeof(_type) * __get_dynamic_len(dest), lttng_alignof(_type)); \ } else { \ __chan->ops->event_write(&__ctx, _src, \ - sizeof(_type) * __get_dynamic_len(dest)); \ + sizeof(_type) * __get_dynamic_len(dest), lttng_alignof(_type)); \ } #else /* #if (__BYTE_ORDER == __LITTLE_ENDIAN) */ /* @@ -940,8 +951,7 @@ static inline size_t __event_get_align__##_name(void *__tp_locvar) \ _user, _nowrite) \ { \ _length_type __tmpl = this_cpu_ptr(<tng_dynamic_len_stack)->stack[__dynamic_len_idx] * sizeof(_type) * CHAR_BIT; \ - lib_ring_buffer_align_ctx(&__ctx, lttng_alignof(_length_type));\ - __chan->ops->event_write(&__ctx, &__tmpl, sizeof(_length_type));\ + __chan->ops->event_write(&__ctx, &__tmpl, sizeof(_length_type), lttng_alignof(_length_type)); \ } \ lib_ring_buffer_align_ctx(&__ctx, lttng_alignof(_type)); \ { \ @@ -972,7 +982,7 @@ static inline size_t __event_get_align__##_name(void *__tp_locvar) \ default: \ BUG_ON(1); \ } \ - __chan->ops->event_write(&__ctx, &_tmp, sizeof(_type)); \ + __chan->ops->event_write(&__ctx, &_tmp, sizeof(_type), 1); \ } \ } #endif /* #else #if (__BYTE_ORDER == __LITTLE_ENDIAN) */