Author: jhb
Date: Tue Feb 16 22:00:01 2016
New Revision: 295677
URL: https://svnweb.freebsd.org/changeset/base/295677

Log:
  Fetch the current thread and it's syscall state from the trussinfo object
  instead of passing some of that state as arguments to print_syscall() and
  print_syscallret().  This just makes the calls of these functions shorter
  and easier to read.

Modified:
  head/usr.bin/truss/setup.c
  head/usr.bin/truss/syscall.h
  head/usr.bin/truss/syscalls.c

Modified: head/usr.bin/truss/setup.c
==============================================================================
--- head/usr.bin/truss/setup.c  Tue Feb 16 21:42:53 2016        (r295676)
+++ head/usr.bin/truss/setup.c  Tue Feb 16 22:00:01 2016        (r295677)
@@ -422,8 +422,7 @@ exit_syscall(struct trussinfo *info, str
                }
        }
 
-       print_syscall_ret(info, t->cs.name, t->cs.nargs, t->cs.s_args,
-           errorp, retval, sc);
+       print_syscall_ret(info, errorp, retval);
        free_syscall(t);
 
        /*

Modified: head/usr.bin/truss/syscall.h
==============================================================================
--- head/usr.bin/truss/syscall.h        Tue Feb 16 21:42:53 2016        
(r295676)
+++ head/usr.bin/truss/syscall.h        Tue Feb 16 22:00:01 2016        
(r295677)
@@ -118,7 +118,6 @@ struct linux_socketcall_args {
 };
 
 void init_syscalls(void);
-void print_syscall(struct trussinfo *, const char *, int, char **);
-void print_syscall_ret(struct trussinfo *, const char *, int, char **, int,
-    long *, struct syscall *);
+void print_syscall(struct trussinfo *);
+void print_syscall_ret(struct trussinfo *, int, long *);
 void print_summary(struct trussinfo *trussinfo);

Modified: head/usr.bin/truss/syscalls.c
==============================================================================
--- head/usr.bin/truss/syscalls.c       Tue Feb 16 21:42:53 2016        
(r295676)
+++ head/usr.bin/truss/syscalls.c       Tue Feb 16 22:00:01 2016        
(r295677)
@@ -2000,37 +2000,39 @@ print_arg(struct syscall_args *sc, unsig
 }
 
 /*
- * Print (to outfile) the system call and its arguments.  Note that
- * nargs is the number of arguments (not the number of words; this is
- * potentially confusing, I know).
+ * Print (to outfile) the system call and its arguments.
  */
 void
-print_syscall(struct trussinfo *trussinfo, const char *name, int nargs,
-    char **s_args)
+print_syscall(struct trussinfo *trussinfo)
 {
        struct timespec timediff;
-       int i, len;
+       struct threadinfo *t;
+       const char *name;
+       char **s_args;
+       int i, len, nargs;
 
        len = 0;
+       t = trussinfo->curthread;
        if (trussinfo->flags & FOLLOWFORKS)
                len += fprintf(trussinfo->outfile, "%5d: ",
-                   trussinfo->curthread->proc->pid);
+                   t->proc->pid);
 
+       name = t->cs.name;
+       nargs = t->cs.nargs;
+       s_args = t->cs.s_args;
        if (name != NULL && (strcmp(name, "execve") == 0 ||
            strcmp(name, "exit") == 0)) {
-               clock_gettime(CLOCK_REALTIME, &trussinfo->curthread->after);
+               clock_gettime(CLOCK_REALTIME, &t->after);
        }
 
        if (trussinfo->flags & ABSOLUTETIMESTAMPS) {
-               timespecsubt(&trussinfo->curthread->after,
-                   &trussinfo->start_time, &timediff);
+               timespecsubt(&t->after, &trussinfo->start_time, &timediff);
                len += fprintf(trussinfo->outfile, "%jd.%09ld ",
                    (intmax_t)timediff.tv_sec, timediff.tv_nsec);
        }
 
        if (trussinfo->flags & RELATIVETIMESTAMPS) {
-               timespecsubt(&trussinfo->curthread->after,
-                   &trussinfo->curthread->before, &timediff);
+               timespecsubt(&t->after, &t->before, &timediff);
                len += fprintf(trussinfo->outfile, "%jd.%09ld ",
                    (intmax_t)timediff.tv_sec, timediff.tv_nsec);
        }
@@ -2038,7 +2040,7 @@ print_syscall(struct trussinfo *trussinf
        len += fprintf(trussinfo->outfile, "%s(", name);
 
        for (i = 0; i < nargs; i++) {
-               if (s_args[i])
+               if (s_args[i] != NULL)
                        len += fprintf(trussinfo->outfile, "%s", s_args[i]);
                else
                        len += fprintf(trussinfo->outfile,
@@ -2052,15 +2054,18 @@ print_syscall(struct trussinfo *trussinf
 }
 
 void
-print_syscall_ret(struct trussinfo *trussinfo, const char *name, int nargs,
-    char **s_args, int errorp, long *retval, struct syscall *sc)
+print_syscall_ret(struct trussinfo *trussinfo, int errorp, long *retval)
 {
        struct timespec timediff;
+       struct threadinfo *t;
+       struct syscall *sc;
+       int error;
 
+       t = trussinfo->curthread;
+       sc = t->cs.sc;
        if (trussinfo->flags & COUNTONLY) {
-               clock_gettime(CLOCK_REALTIME, &trussinfo->curthread->after);
-               timespecsubt(&trussinfo->curthread->after,
-                   &trussinfo->curthread->before, &timediff);
+               clock_gettime(CLOCK_REALTIME, &t->after);
+               timespecsubt(&t->after, &t->before, &timediff);
                timespecadd(&sc->time, &timediff, &sc->time);
                sc->ncalls++;
                if (errorp)
@@ -2068,7 +2073,7 @@ print_syscall_ret(struct trussinfo *trus
                return;
        }
 
-       print_syscall(trussinfo, name, nargs, s_args);
+       print_syscall(trussinfo);
        fflush(trussinfo->outfile);
        if (errorp)
                fprintf(trussinfo->outfile, " ERR#%ld '%s'\n", retval[0],
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to