cc [ flag ... ] file ... -ltnfprobe [ library ... ] #include <tnf/probe.h>
There are three levels of granularity for controlling tracing and probe functions (called probing from here on): probing for the entire process, a particular thread, and the probe itself can be disabled or enabled. The first two (process and thread) are controlled by this interface. The probe is controlled with the prex(1) utility.
The tnf_process_disable() function turns off probing for the process. The default process state is to have probing enabled. The tnf_process_enable() function turns on probing for the process.
The tnf_thread_disable() function turns off probing for the currently running thread. Threads are "born" or created with this state enabled. The tnf_thread_enable() function turns on probing for the currently running thread. If the program is a non-threaded program, these two thread interfaces disable or enable probing for the process.
See attributes(5) for descriptions of the following attributes:
|ATTRIBUTE TYPE||ATTRIBUTE VALUE|
prex(1), tnfdump(1), TNF_DECLARE_RECORD(3TNF), TNF_PROBE(3TNF), attributes(5)
A probe is considered enabled only if:
• prex(1) has enabled the probe AND
• the process has probing enabled, which is the default or could be set with tnf_process_enable() AND
• the thread that hits the probe has probing enabled, which is every thread's default or could be set with tnf_thread_enable().
There is a run time cost associated with determining that the probe is disabled. To reduce the performance effect of probes, this cost should be minimized. The quickest way that a probe can be determined to be disabled is by the enable control that prex(1) uses. Therefore, to disable all the probes in a process use the disable command in prex(1) rather than tnf_process_disable().
The tnf_process_disable() and tnf_process_enable() functions should only be used to toggle probing based on some internal program condition. The tnf_thread_disable() function should be used to turn off probing for threads that are uninteresting.