Just can't understand UTRACE_SYSCALL_RESUMED code. To the pointed, I tried to read the docs:
* When %UTRACE_STOP is used in @report_syscall_entry, then @task * stops before attempting the system call. In this case, another * @report_syscall_entry callback follows after @task resumes; Probably I misread this comment, or code (or both) but this is not what utrace_report_syscall_entry(). The second reporting loop is done if the tracee stops, and its ->resume = UTRACE_REPORT after wakeup. This can happen if, during the first report, one engine returns UTRACE_STOP and another engine returns UTRACE_REPORT. Or, no matter how many engines we have, the tracer uses UTRACE_REPORT to wakeup the tracee after SYSCALL_ENTRY stop. In any case, what is the rationality? And how can we trust "if (utrace->resume == UTRACE_REPORT)" ? If we have multiple engines, some engine can use UTRACE_INTERRUPT ? Oleg.