<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jul 14, 2016 at 7:43 PM, Dmitry V. Levin <span dir="ltr"><<a href="mailto:ldv@altlinux.org" target="_blank">ldv@altlinux.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Tue, Jul 12, 2016 at 03:30:37PM +0200, Amin Khorsandiaghai wrote:<br>
> ---<br>
>  strace.1  |  5 +++++<br>
>  strace.c  |  6 +++++-<br>
>  syscall.c | 21 +++++++++++++++++++++<br>
>  3 files changed, 31 insertions(+), 1 deletion(-)<br>
><br>
> diff --git a/strace.1 b/strace.1<br>
> index b7dddc0..5f5c1cc 100644<br>
> --- a/strace.1<br>
> +++ b/strace.1<br>
> @@ -488,6 +488,11 @@ When strace can be interrupted by signals (such as pressing ^C).<br>
>  4: fatal signals and SIGTSTP (^Z) are always blocked (useful to make<br>
>  strace -o FILE PROG not stop on ^Z).<br>
>  .TP<br>
> +.BI "\-m " traceclass<br>
> +List all system calls in a trace class. For example<br>
> +.BR "\-m file"<br>
> +prints the list of all system calls in file class.<br>
> +.TP<br>
<br>
</span>Why -m?<br>
<span class=""><br></span></blockquote><div>It was not taken already! :P </div><div>May I choose something like -e class=file?</div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
> @@ -1601,6 +1601,10 @@ init(int argc, char *argv[])<br>
>               case 'e':<br>
>                       qualify(optarg);<br>
>                       break;<br>
> +             case 'm':<br>
> +                     print_trace_class(optarg);<br>
<br>
</span>The code shouldn't cause compilation warnings.<br>
<span class=""><br></span></blockquote><div>I did not get any warnings when doing make!</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
> --- a/syscall.c<br>
> +++ b/syscall.c<br>
> @@ -504,6 +504,27 @@ lookup_class(const char *s)<br>
>  }<br>
><br>
>  void<br>
> +print_trace_class(const char *trace_class)<br>
> +{<br>
> +     unsigned int i;<br>
> +     unsigned pers;<br>
> +     int rc;<br>
> +<br>
> +     if ((rc = lookup_class(trace_class)) != -1) {<br>
> +             fprintf(stdout, "List of system calls in %s class\n", trace_class);<br>
<br>
</span>Shouldn't there be a separate line printed for each personality?<br>
Shouldn't shared_log be used instead of stdout?<br>
<br>
See e.g. call_summary().<br></blockquote><div>OK! <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class=""><br>
> +             fprintf(stdout, "-------------------------------------\n");<br>
> +             for (pers = 0; pers < SUPPORTED_PERSONALITIES; pers++) {<br>
> +                     for (i = 0; i < nsyscall_vec[pers]; i++)<br>
> +                             if (sysent_vec[pers][i].sys_flags & rc) {<br>
> +                                     fprintf(stdout, "\t%s \n", sysent_vec[pers][i].sys_name);<br>
<br>
</span>This line's too long.<br></blockquote><div>What is the line length limit?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
> +                             }<br>
> +             }<br>
> +     } else {<br>
> +             error_msg_and_die("invalid class '%s'", trace_class);<br>
> +     }<br>
<br>
</span>The preferred style is<br>
<br>
        int rc = lookup_class(trace_class);<br>
<br>
        if (rc < 0)<br>
<span class="">                error_msg_and_die("invalid class '%s'", trace_class);<br>
<br>
</span>        ...<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
ldv<br>
</font></span><br>------------------------------------------------------------------------------<br>
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic<br>
patterns at an interface-level. Reveals which users, apps, and protocols are<br>
consuming the most bandwidth. Provides multi-vendor support for NetFlow,<br>
J-Flow, sFlow and other flows. Make informed decisions using capacity planning<br>
reports.<a href="http://sdm.link/zohodev2dev" rel="noreferrer" target="_blank">http://sdm.link/zohodev2dev</a><br>_______________________________________________<br>
Strace-devel mailing list<br>
<a href="mailto:Strace-devel@lists.sourceforge.net">Strace-devel@lists.sourceforge.net</a><br>
<a href="https://lists.sourceforge.net/lists/listinfo/strace-devel" rel="noreferrer" target="_blank">https://lists.sourceforge.net/lists/listinfo/strace-devel</a><br>
<br></blockquote></div><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">Also do you know how can I filter out the duplicated system calls which are shared between</div><div class="gmail_extra">personalities? Should I implement a solution for it or is there already a way for this?</div><div class="gmail_extra">For example open system call exist in all three personalities available in x86_64 systems.</div><div class="gmail_extra">I want to only print one of them.</div><div class="gmail_extra"><br></div><div class="gmail_extra">BR,</div><div class="gmail_extra">-Amin</div></div>