1/* Static DTrace probes interface */ 2 3#ifndef Py_DTRACE_H 4#define Py_DTRACE_H 5#ifdef __cplusplus 6extern "C" { 7#endif 8 9#ifdef WITH_DTRACE 10 11#include "pydtrace_probes.h" 12 13/* pydtrace_probes.h, on systems with DTrace, is auto-generated to include 14 `PyDTrace_{PROBE}` and `PyDTrace_{PROBE}_ENABLED()` macros for every probe 15 defined in pydtrace_provider.d. 16 17 Calling these functions must be guarded by a `PyDTrace_{PROBE}_ENABLED()` 18 check to minimize performance impact when probing is off. For example: 19 20 if (PyDTrace_FUNCTION_ENTRY_ENABLED()) 21 PyDTrace_FUNCTION_ENTRY(f); 22*/ 23 24#else 25 26/* Without DTrace, compile to nothing. */ 27 28static inline void PyDTrace_LINE(const char *arg0, const char *arg1, int arg2) {} 29static inline void PyDTrace_FUNCTION_ENTRY(const char *arg0, const char *arg1, int arg2) {} 30static inline void PyDTrace_FUNCTION_RETURN(const char *arg0, const char *arg1, int arg2) {} 31static inline void PyDTrace_GC_START(int arg0) {} 32static inline void PyDTrace_GC_DONE(Py_ssize_t arg0) {} 33static inline void PyDTrace_INSTANCE_NEW_START(int arg0) {} 34static inline void PyDTrace_INSTANCE_NEW_DONE(int arg0) {} 35static inline void PyDTrace_INSTANCE_DELETE_START(int arg0) {} 36static inline void PyDTrace_INSTANCE_DELETE_DONE(int arg0) {} 37static inline void PyDTrace_IMPORT_FIND_LOAD_START(const char *arg0) {} 38static inline void PyDTrace_IMPORT_FIND_LOAD_DONE(const char *arg0, int arg1) {} 39static inline void PyDTrace_AUDIT(const char *arg0, void *arg1) {} 40 41static inline int PyDTrace_LINE_ENABLED(void) { return 0; } 42static inline int PyDTrace_FUNCTION_ENTRY_ENABLED(void) { return 0; } 43static inline int PyDTrace_FUNCTION_RETURN_ENABLED(void) { return 0; } 44static inline int PyDTrace_GC_START_ENABLED(void) { return 0; } 45static inline int PyDTrace_GC_DONE_ENABLED(void) { return 0; } 46static inline int PyDTrace_INSTANCE_NEW_START_ENABLED(void) { return 0; } 47static inline int PyDTrace_INSTANCE_NEW_DONE_ENABLED(void) { return 0; } 48static inline int PyDTrace_INSTANCE_DELETE_START_ENABLED(void) { return 0; } 49static inline int PyDTrace_INSTANCE_DELETE_DONE_ENABLED(void) { return 0; } 50static inline int PyDTrace_IMPORT_FIND_LOAD_START_ENABLED(void) { return 0; } 51static inline int PyDTrace_IMPORT_FIND_LOAD_DONE_ENABLED(void) { return 0; } 52static inline int PyDTrace_AUDIT_ENABLED(void) { return 0; } 53 54#endif /* !WITH_DTRACE */ 55 56#ifdef __cplusplus 57} 58#endif 59#endif /* !Py_DTRACE_H */ 60