svn commit: r298410 - stable/10/usr.bin/truss
John Baldwin
jhb at FreeBSD.org
Thu Apr 21 15:25:19 UTC 2016
Author: jhb
Date: Thu Apr 21 15:25:17 2016
New Revision: 298410
URL: https://svnweb.freebsd.org/changeset/base/298410
Log:
MFC 295677,295678:
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:
stable/10/usr.bin/truss/setup.c
stable/10/usr.bin/truss/syscall.h
stable/10/usr.bin/truss/syscalls.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/usr.bin/truss/setup.c
==============================================================================
--- stable/10/usr.bin/truss/setup.c Thu Apr 21 15:24:21 2016 (r298409)
+++ stable/10/usr.bin/truss/setup.c Thu Apr 21 15:25:17 2016 (r298410)
@@ -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: stable/10/usr.bin/truss/syscall.h
==============================================================================
--- stable/10/usr.bin/truss/syscall.h Thu Apr 21 15:24:21 2016 (r298409)
+++ stable/10/usr.bin/truss/syscall.h Thu Apr 21 15:25:17 2016 (r298410)
@@ -111,7 +111,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: stable/10/usr.bin/truss/syscalls.c
==============================================================================
--- stable/10/usr.bin/truss/syscalls.c Thu Apr 21 15:24:21 2016 (r298409)
+++ stable/10/usr.bin/truss/syscalls.c Thu Apr 21 15:25:17 2016 (r298410)
@@ -1620,37 +1620,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);
}
@@ -1658,7 +1660,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,
@@ -1672,15 +1674,17 @@ 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;
+ 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)
@@ -1688,7 +1692,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],
More information about the svn-src-all
mailing list