Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/LibreOffice/dbaccess/qa/unoapi/   (Office von Apache Version 25.8.3.2©)  Datei vom 5.10.2025 mit Größe 2 kB image not shown  

Quelle  ftrace2bconf.sh   Sprache: unbekannt

 
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0-only

usage() {
 echo "Dump boot-time tracing bootconfig from ftrace"
 echo "Usage: $0 [--debug] [ > BOOTCONFIG-FILE]"
 exit 1
}

DEBUG=
while [ x"$1" != x ]; do
 case "$1" in
 "--debug")
  DEBUG=$1;;
 -*)
  usage
  ;;
 esac
 shift 1
done

if [ x"$DEBUG" != x ]; then
 set -x
fi

TRACEFS=`grep -m 1 -w tracefs /proc/mounts | cut -f 2 -d " "`
if [ -z "$TRACEFS" ]; then
 if ! grep -wq debugfs /proc/mounts; then
  echo "Error: No tracefs/debugfs was mounted."
  exit 1
 fi
 TRACEFS=`grep -m 1 -w debugfs /proc/mounts | cut -f 2 -d " "`/tracing
 if [ ! -d $TRACEFS ]; then
  echo "Error: ftrace is not enabled on this kernel." 1>&2
  exit 1
 fi
fi

######## main #########

set -e

emit_kv() { # key =|+= value
 echo "$@"
}

global_options() {
 val=`cat $TRACEFS/max_graph_depth`
 [ $val != 0 ] && emit_kv kernel.fgraph_max_depth = $val
 if grep -qv "^#" $TRACEFS/set_graph_function $TRACEFS/set_graph_notrace ; then
  cat 1>&2 << EOF
# WARN: kernel.fgraph_filters and kernel.fgraph_notrace are not supported, since the wild card expression was expanded and lost from memory.
EOF
 fi
}

kprobe_event_options() {
 cat $TRACEFS/kprobe_events | while read p args; do
  case $p in
  r*)
  cat 1>&2 << EOF
# WARN: A return probe found but it is not supported by bootconfig. Skip it.
EOF
  continue;;
  esac
  p=${p#*:}
  event=${p#*/}
  group=${p%/*}
  if [ $group != "kprobes" ]; then
   cat 1>&2 << EOF
# WARN: kprobes group name $group is changed to "kprobes" for bootconfig.
EOF
  fi
  emit_kv $PREFIX.event.kprobes.$event.probes += $args
 done
}

synth_event_options() {
 cat $TRACEFS/synthetic_events | while read event fields; do
  emit_kv $PREFIX.event.synthetic.$event.fields = `echo $fields | sed "s/;/,/g"`
 done
}

# Variables resolver
DEFINED_VARS=
UNRESOLVED_EVENTS=

defined_vars() { # event-dir
 grep "^hist" $1/trigger | grep -o ':[a-zA-Z0-9]*='
}
referred_vars() {
 grep "^hist" $1/trigger | grep -o '$[a-zA-Z0-9]*'
}

event_is_enabled() { # enable-file
 test -f $1 && grep -q "1" $1
}

per_event_options() { # event-dir
 evdir=$1
 # Check the special event which has no filter and no trigger
 [ ! -f $evdir/filter ] && return

 if grep -q "^hist:" $evdir/trigger; then
  # hist action can refer the undefined variables
  __vars=`defined_vars $evdir`
  for v in `referred_vars $evdir`; do
   if echo $DEFINED_VARS $__vars | grep -vqw ${v#$}; then
    # $v is not defined yet, defer it
    UNRESOLVED_EVENTS="$UNRESOLVED_EVENTS $evdir"
    return;
   fi
  done
  DEFINED_VARS="$DEFINED_VARS "`defined_vars $evdir`
 fi
 grep -v "^#" $evdir/trigger | while read action active; do
  emit_kv $PREFIX.event.$group.$event.actions += \'$action\'
 done

 if [ $GROUP_ENABLED -eq 0 ] && event_is_enabled $evdir/enable; then
  emit_kv $PREFIX.event.$group.$event.enable
 fi
 val=`cat $evdir/filter`
 if [ "$val" != "none" ]; then
  emit_kv $PREFIX.event.$group.$event.filter = "$val"
 fi
}

retry_unresolved() {
 unresolved=$UNRESOLVED_EVENTS
 UNRESOLVED_EVENTS=
 for evdir in $unresolved; do
  event=${evdir##*/}
  group=${evdir%/*}; group=${group##*/}
  per_event_options $evdir
 done
}

event_options() {
 # PREFIX and INSTANCE must be set
 if [ $PREFIX = "ftrace" ]; then
  # define the dynamic events
  kprobe_event_options
  synth_event_options
 fi
 ALL_ENABLED=0
 if event_is_enabled $INSTANCE/events/enable; then
  emit_kv $PREFIX.event.enable
  ALL_ENABLED=1
 fi
 for group in `ls $INSTANCE/events/` ; do
  [ ! -d $INSTANCE/events/$group ] && continue
  GROUP_ENABLED=$ALL_ENABLED
  if [ $ALL_ENABLED -eq 0 ] && \
     event_is_enabled $INSTANCE/events/$group/enable ;then
   emit_kv $PREFIX.event.$group.enable
   GROUP_ENABLED=1
  fi
  for event in `ls $INSTANCE/events/$group/` ;do
   [ ! -d $INSTANCE/events/$group/$event ] && continue
   per_event_options $INSTANCE/events/$group/$event
  done
 done
 retry=0
 while [ $retry -lt 3 ]; do
  retry_unresolved
  retry=$((retry + 1))
 done
 if [ "$UNRESOLVED_EVENTS" ]; then
  cat 1>&2 << EOF
! ERROR: hist triggers in $UNRESOLVED_EVENTS use some undefined variables.
EOF
 fi
}

is_default_trace_option() { # option
grep -qw $1 << EOF
print-parent
nosym-offset
nosym-addr
noverbose
noraw
nohex
nobin
noblock
trace_printk
annotate
nouserstacktrace
nosym-userobj
noprintk-msg-only
context-info
nolatency-format
record-cmd
norecord-tgid
overwrite
nodisable_on_free
irq-info
markers
noevent-fork
nopause-on-trace
function-trace
nofunction-fork
nodisplay-graph
nostacktrace
notest_nop_accept
notest_nop_refuse
EOF
}

instance_options() { # [instance-name]
 if [ $# -eq 0 ]; then
  PREFIX="ftrace"
  INSTANCE=$TRACEFS
 else
  PREFIX="ftrace.instance.$1"
  INSTANCE=$TRACEFS/instances/$1
 fi
 val=
 for i in `cat $INSTANCE/trace_options`; do
  is_default_trace_option $i && continue
  val="$val, $i"
 done
 [ "$val" ] && emit_kv $PREFIX.options = "${val#,}"
 val="local"
 for i in `cat $INSTANCE/trace_clock` ; do
  [ "${i#*]}" ] && continue
  i=${i%]}; val=${i#[}
 done
 [ $val != "local" ] && emit_kv $PREFIX.trace_clock = $val
 val=`cat $INSTANCE/buffer_size_kb`
 if echo $val | grep -vq "expanded" ; then
  emit_kv $PREFIX.buffer_size = $val"KB"
 fi
 if grep -q "is allocated" $INSTANCE/snapshot ; then
  emit_kv $PREFIX.alloc_snapshot
 fi
 val=`cat $INSTANCE/tracing_cpumask`
 if [ `echo $val | sed -e s/f//g`x != x ]; then
  emit_kv $PREFIX.cpumask = $val
 fi
 val=`cat $INSTANCE/tracing_on`
 if [ "$val" = "0" ]; then
  emit_kv $PREFIX.tracing_on = 0
 fi

 val=`cat $INSTANCE/current_tracer`
 [ $val != nop ] && emit_kv $PREFIX.tracer = $val
 if grep -qv "^#" $INSTANCE/set_ftrace_filter $INSTANCE/set_ftrace_notrace; then
  cat 1>&2 << EOF
# WARN: kernel.ftrace.filters and kernel.ftrace.notrace are not supported, since the wild card expression was expanded and lost from memory.
EOF
 fi
 event_options
}

global_options
instance_options
for i in `ls $TRACEFS/instances` ; do
 instance_options $i
done

Messung V0.5
C=93 H=98 G=95

[ zur Elbe Produktseite wechseln0.22Quellennavigators  Analyse erneut starten  ]