In systemtap (<http://sourceware.org/systemtap/>), we're using utrace to be able to put systemtap probes in arbitrary threads. Internally, there are two fairly separate and distinct layers, each using utrace on the same thread.
This has worked well. However, I'm having trouble when each layer requests UTRACE_ACTION_QUIESCE. The upper layer does: utrace_set_flags(tsk, engine, UTRACE_ACTION_QUIESCE|UTRACE_EVENT(QUIESCE)); Then, in the .report_quiesce handler, it does its processing and returns UTRACE_ACTION_DETACH. The upper layer is working correctly. The lower layer does: utrace_set_flags(tsk, engine, UTRACE_ACTION_QUIESCE|UTRACE_EVENT(QUIESCE)|UTRACE_EVENT(DEATH)); After the lower layer's .report_quiesce handler is called, I'd like to turn off quiesce handling for this engine and leave on UTRACE_EVENT(DEATH) handling. I've tried various combinations of return values and calling utrace_set_flags() in the .report_quiesce handler, but this handler always seems to get called twice (when the upper layer also does a UTRACE_ACTION_QUIESCE). So, what does the lower layer need to do to correctly turn off quiesce handling for the engine in this case? Note that both layer's engines get installed on the thread in the same callback. Thanks for the help. -- David Smith [EMAIL PROTECTED] Red Hat http://www.redhat.com 256.217.0141 (direct) 256.837.0057 (fax)