On Sun, Jun 04, 2017 at 01:59:16AM +0300, Victor Krapivensky wrote:
> This change removes the trace_syscall function. Now, the code that uses
> syscall.c trace functions is expected to check whether it is a syscall
> entry or exit (with entering(tcp)/exiting(tcp)) itself, and then make an
> appropriate sequence of function calls.
>
> * defs.h: Change comment on TCB_INSYSCALL, remove the prototype of
> trace_syscall, add prototypes for the new functions.
> * strace.c (trace_syscall): A static replacement for old trace_syscall.
> * syscall.c (trace_syscall): Remove.
> (trace_syscall_entering): Split into...
> (syscall_entering_decode, syscall_entering_trace,
> syscall_entering_finish): ...new functions.
> (trace_syscall_exiting): Split into...
> (syscall_exiting_prepare, syscall_exiting_trace): ...new functions.
[...]
> @@ -2459,6 +2459,26 @@ next_event(int *pstatus, siginfo_t *si)
> }
> }
>
> +static inline int
> +trace_syscall(struct tcb *tcp, unsigned int *sig)
> +{
> + if (entering(tcp)) {
> + int res = syscall_entering_decode(tcp);
> + switch (res) {
> + case 0:
> + return 0;
> + case 1:
> + res = syscall_entering_trace(tcp, sig);
> + }
> + syscall_entering_finish(tcp, res);
> + return res;
> + } else {
> + struct timeval tv = {};
> + syscall_exiting_prepare(tcp, &tv);
> + return syscall_exiting_trace(tcp, tv);
> + }
> +}Looks like this change doesn't change anything, which is good. :) Why "static inline"? Is it important whether the function is actually inlined or not? If not, no need to insist on inlining. Why syscall_entering_decode was given this name? It does get_scno, get_syscall_args, decode_mips_subcall, decode_socket_subcall, decode_ipc_subcall - in other words, it fetches syscall number and arguments. This split is not the only one possible, what was the rationale for this one? For example, get_scno and get_syscall_args are not invoked by syscall_entering_trace, but get_regs and get_syscall_result are invoked by syscall_exiting_trace - why? -- ldv
signature.asc
Description: PGP signature
------------------------------------------------------------------------------ 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 [email protected] https://lists.sourceforge.net/lists/listinfo/strace-devel
