[PATCH v2] Implemented -e trace=%clock option for clock_* related syscalls

Rishi Bhatt bhatt.rishi062 at gmail.com
Thu Mar 16 11:11:22 UTC 2017


Patched the changes that you have mentioned.
On Thu, Mar 16, 2017 at 7:45 AM, Dmitry V. Levin <ldv at altlinux.org> wrote:

> On Thu, Mar 16, 2017 at 12:17:08AM +0530, Rishi Bhatt wrote:
> > linux/*/syscallent.h part is modified automatically by:
> >
> >     git grep -Fl 'SEN(clock_' linux/ | xargs sed -i \
> >         's/0\(,[[:space:]]*SEN(clock_\)/TC\1/'
>
> I think TC is too short, let's use 3-letter abbreviations for new classes,
> e.g. TCL.
>

Done


> >       * syscall.c: Alias TC to TRACE_CLOCK around syscallent.h inclusion.
> >       * sysent.h (TRACE_CLOCK): New definition.
> >       * qualify.c (lookup_class): Add TRACE_CLOCK for "%clock".
> >       * strace.1 (.SS Filtering): Add information about %clock syscall
> class.
> >       * linux/32/syscallent.h: Add TSC flag for sched_* sycalls.
>
> For sched_* sycalls?  Really?  When you do a cut-n-paste from commit
> 811638e9c1805438a63c14f9704b8b00ac922623, please do not copy its typos.
>
> Sorry,won't happen again.
noted.

> >       * linux/64/syscallent.h: Likewise.
> >       * linux/alpha/syscallent.h: Likewise.
> >       * linux/arm/syscallent.h: Likewise.
> >       * linux/avr32/syscallent.h: Likewise.
> >       * linux/bfin/syscallent.h: Likewise.
> >       * linux/crisv10/syscallent.h: Likewise.
> >       * linux/hppa/syscallent.h: Likewise.
> >       * linux/i386/syscallent.h: Likewise.
> >       * linux/ia64/syscallent.h: Likewise.
> >       * linux/m68k/syscallent.h: Likewise.
> >       * linux/microblaze/syscallent.h: Likewise.
> >       * linux/mips/syscallent-n32.h: Likewise.
> >       * linux/mips/syscallent-n64.h: Likewise.
> >       * linux/mips/syscallent-o32.h: Likewise.
> >       * linux/powerpc/syscallent.h: Likewise.
> >       * linux/powerpc64/syscallent.h: Likewise.
> >       * linux/s390/syscallent.h: Likewise.
> >       * linux/s390x/syscallent.h: Likewise.
> >       * linux/sh/syscallent.h: Likewise.
> >       * linux/sh64/syscallent.h: Likewise.
> >       * linux/sparc/syscallent.h: Likewise.
> >       * linux/sparc64/syscallent.h: Likewise.
> >       * linux/x32/syscallent.h: Likewise.
> >       * linux/x86_64/syscallent.h: Likewise.
> >       * linux/xtensa/syscallent.h: Likewise.
> >       * tests/Makefile.am (DECODER_TESTS): Add clock.test.
> >       * tests/ksysent.c: Define TC to 0.
> >       * tests/nsyscalls.c: Define TC to 0
>
> Use "Likewise".
>
> >       * tests/clock.test: New test.
>
> The idiom is
>         * tests/clock.test: New test.
>         * tests/Makefile.am (DECODER_TESTS): Add it.
>
> [...]
> > --- a/strace.1
> > +++ b/strace.1
> > @@ -429,6 +429,9 @@ Trace all memory mapping related system calls.
> >  .BR "\-e\ trace" = %sched
> >  Trace all scheduler-related (sched_*) system calls.
> >  .TP
> > +.BR "\-e\ trace" = %clock
> > +Trace all clock-related (clock_*) system calls
>
> Please terminate sentences.
>
> > +.TP
> >  \fB\-e\ abbrev\fR=\,\fIset\fR
> >  Abbreviate the output from printing each member of large structures.
> >  The default is
> > diff --git a/syscall.c b/syscall.c
> > index 569055f2..c7980c40 100644
> > --- a/syscall.c
> > +++ b/syscall.c
> > @@ -77,6 +77,7 @@
> >  #define TS TRACE_SIGNAL
> >  #define TM TRACE_MEMORY
> >  #define TSC TRACE_SCHED
> > +#define TC TRACE_CLOCK
> >  #define NF SYSCALL_NEVER_FAILS
> >  #define MA MAX_ARGS
> >  #define SI STACKTRACE_INVALIDATE_CACHE
> > @@ -113,6 +114,7 @@ static const struct_sysent sysent2[] = {
> >  #undef TS
> >  #undef TM
> >  #undef TSC
> > +#undef TC
> >  #undef NF
> >  #undef MA
> >  #undef SI
> > diff --git a/sysent.h b/sysent.h
> > index f4eaa930..7e95ab3a 100644
> > --- a/sysent.h
> > +++ b/sysent.h
> > @@ -22,5 +22,5 @@ typedef struct sysent {
> >  #define TRACE_INDIRECT_SUBCALL       02000   /* Syscall is an indirect
> socket/ipc subcall. */
> >  #define COMPAT_SYSCALL_TYPES 04000   /* A compat syscall that uses
> compat types. */
> >  #define TRACE_SCHED          010000  /* Trace scheduler-related
> syscalls. */
> > -
> > +#define TRACE_CLOCK          020000  /*Trace clock-related syscalls. */
>
> Why removing the empty line.
> i didn't get it?
> >  #endif /* !STRACE_SYSENT_H */
> > diff --git a/tests/Makefile.am b/tests/Makefile.am
> > index c5c124c0..7a22d421 100644
> > --- a/tests/Makefile.am
> > +++ b/tests/Makefile.am
> > @@ -503,6 +503,7 @@ DECODER_TESTS = \
> >       chown.test \
> >       chown32.test \
> >       chroot.test \
> > +     clock.test \
> >       clock_adjtime.test \
> >       clock_nanosleep.test \
> >       clock_xettime.test \
> > diff --git a/tests/clock.test b/tests/clock.test
> > new file mode 100755
> > index 00000000..8e3e1bd2
> > --- /dev/null
> > +++ b/tests/clock.test
> > @@ -0,0 +1,41 @@
> > +#!/bin/sh
> > +# Check -e trace=%clock option
>
> Please terminate sentences.
>
> This file is modelled after tests/sched.test which has been changed
> yesterday, please rebase.
>
> Done

> > +# Positive Test cases.
> > +CLOCK_TESTS='40 clock_nanosleep
> > +37 clock_adjtime
> > +36 clock_xettime'
> > +
> > +# Negative Test Cases.
> > +NON_CLOCK_TESTS='11 fchdir
> > +27 futex
> > +10 fsync'
> > +
> > +# Declaring the init.sh
> > +. "${srcdir=.}/init.sh"
> > +
> > +#
> > +# Tracing Clock_* related syscalls.
> > +#
> > +echo "$CLOCK_TESTS" | while read w i
> > +do
> > +     run_prog ./$i > /dev/null
> > +     run_strace -a$w -e trace=%clock,setitimer ./$i > "$EXP"
> > +     match_diff "$LOG" "$EXP"
> > +
> > +done
> > +
> > +echo '+++ exited with 0 +++' > "$EXP"
> > +#
> > +# Tracing NON_CLOCK related syscalls
> > +# /dev/null for ignoring print statements
> > +# from the executable.
>
> Everybody knows what /dev/null is for, no need to mention it.
>
>
> --
> ldv
>
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Strace-devel mailing list
> Strace-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/strace-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20170316/44c3cad3/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v3-0001-Implemented-e-trace-clock-option.patch
Type: text/x-patch
Size: 45205 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20170316/44c3cad3/attachment.bin>


More information about the Strace-devel mailing list