1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0 3# description: Basic tests on writing to trace_marker 4# requires: trace_marker 5# flags: instance 6 7get_buffer_data_size() { 8 sed -ne 's/^.*data.*size:\([0-9][0-9]*\).*/\1/p' events/header_page 9} 10 11get_buffer_data_offset() { 12 sed -ne 's/^.*data.*offset:\([0-9][0-9]*\).*/\1/p' events/header_page 13} 14 15get_event_header_size() { 16 type_len=`sed -ne 's/^.*type_len.*:[^0-9]*\([0-9][0-9]*\).*/\1/p' events/header_event` 17 time_len=`sed -ne 's/^.*time_delta.*:[^0-9]*\([0-9][0-9]*\).*/\1/p' events/header_event` 18 array_len=`sed -ne 's/^.*array.*:[^0-9]*\([0-9][0-9]*\).*/\1/p' events/header_event` 19 total_bits=$((type_len+time_len+array_len)) 20 total_bits=$((total_bits+7)) 21 echo $((total_bits/8)) 22} 23 24get_print_event_buf_offset() { 25 sed -ne 's/^.*buf.*offset:\([0-9][0-9]*\).*/\1/p' events/ftrace/print/format 26} 27 28event_header_size=`get_event_header_size` 29print_header_size=`get_print_event_buf_offset` 30 31data_offset=`get_buffer_data_offset` 32 33marker_meta=$((event_header_size+print_header_size)) 34 35make_str() { 36 cnt=$1 37 # subtract two for \n\0 as marker adds these 38 cnt=$((cnt-2)) 39 printf -- 'X%.0s' $(seq $cnt) 40} 41 42write_buffer() { 43 size=$1 44 45 str=`make_str $size` 46 47 # clear the buffer 48 echo > trace 49 50 # write the string into the marker 51 echo -n $str > trace_marker 52 53 echo $str 54} 55 56test_buffer() { 57 58 size=`get_buffer_data_size` 59 oneline_size=$((size-marker_meta)) 60 echo size = $size 61 echo meta size = $marker_meta 62 63 # Now add a little more the meta data overhead will overflow 64 65 str=`write_buffer $size` 66 67 # Make sure the line was broken 68 new_str=`awk ' /tracing_mark_write:/ { sub(/^.*tracing_mark_write: /,"");printf "%s", $0; exit}' trace` 69 70 if [ "$new_str" = "$str" ]; then 71 exit fail; 72 fi 73 74 # Make sure the entire line can be found 75 new_str=`awk ' /tracing_mark_write:/ { sub(/^.*tracing_mark_write: /,"");printf "%s", $0; }' trace` 76 77 if [ "$new_str" != "$str" ]; then 78 exit fail; 79 fi 80} 81 82test_buffer 83