Messages in this thread | | | Date | Thu, 6 Dec 2018 09:10:28 +0100 | From | Peter Zijlstra <> | Subject | Re: [PATCH 1/8] perf: Allow to block process in syscall tracepoints |
| |
On Wed, Dec 05, 2018 at 05:05:02PM +0100, Jiri Olsa wrote: > +static void trace_block_syscall(struct pt_regs *regs, bool enter) > +{ > + current->perf_blocked = true; > + > + do { > + schedule_timeout(100 * HZ); > + current->perf_blocked_cnt = 0; > + > + if (enter) { > + /* perf syscalls:* enter */ > + perf_trace_syscall_enter(regs); > + > + /* perf raw_syscalls:* enter */ > + perf_trace_sys_enter(&event_sys_enter, regs, regs->orig_ax); > + } else { > + /* perf syscalls:* enter */ > + perf_trace_syscall_exit(regs); > + > + /* perf raw_syscalls:* enter */ > + perf_trace_sys_exit(&event_sys_exit, regs, regs->ax); > + } > + } while (current->perf_blocked_cnt); > + > + current->perf_blocked = false; > +}
I don't understand this.. why are we using schedule_timeout() and all that?
| |